Nachdem wir nun alle grundlegenden Teile vorgestellt haben, können wir die CPU bauen. Dieser Abschnitt umfasst zahlreiche Inhalte. Nachdem wir nun mit dem Bau einer CPU begonnen haben, sind Programme unverzichtbar, da die CPU zum Ausführen von Programmen verwendet wird. Wir wissen, dass Programme, die in einer beliebigen Programmiersprache geschrieben sind, irgendwann in Binärcodes umgewandelt werden. Deshalb verwenden wir hier direkt die binäre Programmiersprache (Maschinensprache). Wenn wir die CPU beispielsweise bitten, eine Addition von 3 x 14 durchzuführen, ähnelt diese Additionsoperation, wenn sie in Maschinensprache beschrieben wird, der folgenden Binärzahl: Es sieht chaotisch aus, oder? Es ist okay, wir werden es später erklären. Sie müssen lediglich wissen, dass dieses Binärprogramm im Speicher gespeichert werden muss, damit die CPU es lesen und ausführen kann. Im Speicher sind nicht nur das Programm, sondern auch die Zahlen 3 und 14 als Berechnungsdaten abgelegt. Die CPU muss lediglich die Daten 3 und 14 von einer bestimmten Adresse im Speicher lesen und dann gemäß den Programmanforderungen Berechnungen mit den beiden Zahlen durchführen (Addition, Subtraktion usw.). Das Ergebnis der Berechnung wird an einer bestimmten Adresse im Speicher gespeichert . Um eine solche Funktion zu erreichen, muss es eine Konvention geben, damit die CPU die entsprechenden Aktionen, nämlich Lesen, Berechnen und Speichern, erkennen kann. Daher legen wir die folgende Konvention fest: (als Anweisungstabelle bezeichnet). Die Anweisungstabelle kann als Interpreter des Programms verstanden werden. Wenn die CPU ein Programm wie 00101110 empfängt, muss sie wissen, was es bedeutet, und die Befehlstabelle kann helfen, Fragen zu beantworten und Zweifel auszuräumen. Insbesondere entsprechen die ersten vier Bits jedes Programms (Befehls) dem Operationscode in der Befehlstabelle und die letzten vier Bits der Adresse in der Befehlstabelle. Beispiel: 00101110. Die ersten vier Bits 0010 sind der Operationscode, der LOAD_A bedeutet (siehe Befehlstabelle), was bedeutet, dass Daten gelesen und in Register A eingefügt werden. Wenn man sich die letzten vier Bits 1110 ansieht, ist der in der Befehlstabelle beschriebene Inhalt die „4-Bit-Speicheradresse“, die tatsächlich die Speicheradresse der zu lesenden Daten ist. Die Bedeutung der beiden zusammen ist „Lesen Sie die Daten an der Adresse 1110 und speichern Sie sie im Register A“. Als nächstes kommt die Rennstrecke! Zuerst brauchen wir ein Stück Erinnerung. Wir können den im vorherigen Abschnitt erwähnten 256-B-Speicher direkt verwenden, gehen der Einfachheit halber jedoch davon aus, dass er nur 16 Adressen hat und 16 8-Bit-Binärzahlen speichern kann. Zusätzlich werden sechs Register benötigt, die jeweils eine 8-Bit-Binärzahl speichern können. Das Register AD wird zum vorübergehenden Speichern und Verarbeiten von Daten verwendet, das Befehlsadressregister wird zum Aufzeichnen verwendet, wo das Programm ausgeführt wird (die Adresse des Programmbefehls), und das Befehlsregister wird zum Speichern des Befehlsinhalts verwendet. Als nächstes analysieren wir den Arbeitsprozess. Wenn der Computer startet, lauten die Anfangswerte aller Register 00000000 und die CPU beginnt mit der ersten Phase: dem Abrufen von Anweisungen , d. h. dem Abrufen von Anweisungen aus dem Speicher. Das Befehlsadressregister wird mit dem Speicher verbunden und liest die Daten an der Adresse 00000000, also 00101110. Diese Daten werden im Befehlsregister gespeichert und die erste Phase endet. Die zweite Phase: die Dekodierung, also das Herausfinden, was die Anweisung bewirken soll. Tatsächlich haben wir die Grundlagen bereits zuvor gelegt. Der Befehlsinhalt ist 00101110, wobei die ersten vier Bits 0010 den Operationscode darstellen, der LOAD_A in der Befehlstabelle entspricht. Die letzten vier Bits der Anweisung sind 1110, was der 4-Bit-Speicheradresse entspricht. Die allgemeine Bedeutung besteht darin, Daten von der Position 1110 zu lesen und sie im Register A zu speichern. Es gibt jedoch keine vorgefertigte Schaltung, die die Dekodierungsarbeit erledigen kann, daher müssen wir einige Schaltungen hinzufügen, wie in der Abbildung gezeigt. Wir werden diese neu hinzugefügte Schaltung vorübergehend als Decodierschaltung bezeichnen. Die ersten vier Bits der Daten 0010 des Befehlsregisters werden als Eingang der Decodierschaltung verwendet. Nach der Verarbeitung durch diese Gatterschaltungen wird schließlich 1 ausgegeben. Mit anderen Worten besteht die Funktion der Decodierschaltung darin, zu erkennen, ob der Befehl 0010 (LOAD_A) ist. Nur wenn die Anweisung 0010 ist, ist die Ausgabe 1, andernfalls ist sie 0. Die dritte Phase: die Ausführung. Der Ausgang der Decodierschaltung wird mit dem Lesefreigabeport des Speichers verbunden und die letzten vier Bits des Befehlsregisters 1110 werden mit dem Adressport des Speichers verbunden, was gleichbedeutend damit ist, das Lesen von Daten an der Speicheradresse 1110, also 00000011 (dezimal 3), zu ermöglichen. Als nächstes: Wie speichern wir diese Daten im Register A? Wir müssen den Ausgang der Dekodierungsschaltung gleichzeitig mit dem Schreibfreigabeport von Register A verbinden, und die Dateneingangsports der vier Register sollten mit dem Datenport des Speichers verbunden werden. Beim Auslesen der Daten 00000011 werden diese gleichzeitig an vier Register gesendet, es darf jedoch nur in Register A geschrieben werden, daher werden die Daten in Register A gespeichert. Als nächstes wird das Befehlsadressregister 1 auf 00000001 geändert, um den nächsten Befehl abzurufen. Die nachfolgenden Schritte ähneln den vorherigen. Es ist zu beachten, dass die vorherige Dekodierungsschaltung nur den ersten Befehl LOAD_A erkennen kann und jeder nachfolgende Befehl eine separate Dekodierungsschaltungsunterstützung erfordert. Die Dekodierschaltungen, Befehlsregister, Befehlsadressregister und anderen Teile, die allen Befehlen entsprechen, bezeichnen wir als Steuereinheit . Als nächstes analysieren wir schnell die verbleibenden Anweisungen. Jetzt ist die Befehlsadresse 00000001, also nehmen wir 00011111 aus dem Speicher und speichern es im Befehlsregister. Der Befehl, der den ersten vier Bits 0001 entspricht, ist LOAD_B, und die letzten vier Bits 1111 sind die zu lesende Speicheradresse. Die entsprechenden Daten sind 00001110 (dezimal 14), die im Register B gespeichert werden. Anschließend fährt das Befehlsadressregister 1 (00000010) mit dem Abrufen des nächsten Befehls fort. Der Befehlsinhalt lautet 10000100. Die ersten vier Ziffern 1000 entsprechen ADD in der Befehlstabelle und die letzten vier Ziffern 0100 sind die Adressen der beiden Register 01 bzw. 00 (da es nur vier Register AD gibt, können sie durch eine zweibittige Binärzahl beschrieben werden), wobei 00 das Register A und 01 das Register B ist. Die Funktion dieses Befehls besteht also darin, die Werte der Register A und B zu addieren. Für die Addition müssen wir die zuvor erwähnte Arithmetik-Logik-Einheit verwenden, die auch als Berechnungseinheit (ALU) bezeichnet wird. Vereinfachen wir die Schaltung wie folgt: Die Register A und B werden über die Steuereinheit mit den beiden Eingangsanschlüssen der Betriebseinheit verbunden. Gleichzeitig übergibt die Steuereinheit den Operator auch an die Betriebseinheit, sodass die Berechnung durchgeführt werden kann. Das Berechnungsergebnis muss gespeichert werden, aber die Anweisung selbst gibt nicht an, wo es gespeichert werden soll, daher gibt es hier eine Konvention. Das Berechnungsergebnis wird im letzten Register der Befehlsadresse gespeichert. Die beiden Registeradressen sind 01 und 00, gefolgt von 00, was Register A ist, sodass das Endergebnis über die Steuereinheit im Register A gespeichert wird. Das Ergebnis ist 00010001 (dezimal 17). Befehlsadressregister 1 (00000011), fahren Sie mit dem Abrufen des nächsten Befehls fort. Der Befehlsinhalt ist 01000111. Die ersten vier Bits 0100 zeigen an, dass der Befehl STORE_A ist, was bedeutet, dass die Daten des Registers A in den Speicher geschrieben werden. Die Speicheradresse sind die letzten vier Bits des Befehls 0111. Die Steuereinheit sendet ein Leseberechtigungssignal an Register A und ein Schreibberechtigungssignal an den Speicher und speichert den Wert von Register A an der entsprechenden Position im Speicher. Abschließend haben wir eine einfache Programmaufgabe, das Addieren zweier Zahlen, abgeschlossen und das Ergebnis erfolgreich gespeichert. Wir werden feststellen, dass das Lesen, Dekodieren und Ausführen jeder Anweisung einem Zyklus entspricht. Die CPU wiederholt diesen Zyklus kontinuierlich, um verschiedene Aufgaben abzuschließen. In jedem Zyklus müssen die arithmetische Logikeinheit, die Steuereinheit und die Speichereinheit (Speicher) eng zusammenarbeiten und den Rhythmus konstant halten, um sicherzustellen, dass das Endergebnis korrekt ist. Doch wie stellt man sicher, dass der Rhythmus stimmt? Es darf weder zu schnell sein, da selbst die Verarbeitung elektrischer Signale Zeit in Anspruch nimmt, noch darf es zu langsam sein, da dies zu einer geringen Rechenleistung führen würde. Es gibt also einen separaten Schaltkreis, der den Rhythmus steuert, genau wie eine Uhr, und der jedem Teil präzise Anweisungen gibt, damit er in geordneter Reihenfolge abläuft. Die CPU verfügt über einen wichtigen Indikator: die Hauptfrequenz. Beispielsweise entsprechen 2,6 GHz 2,6 Milliarden Zyklen pro Sekunde, was bedeutet, dass die CPU 2,6 Milliarden Zyklen in einer Sekunde ausführt. Je höher die Hauptfrequenz der CPU, desto schneller ist sie. Wir kapseln die arithmetisch-logische Einheit mit Taktschaltung, Steuereinheit und 6 Registern in einen relativ unabhängigen Teil, nämlich die CPU! An diesem Punkt begannen wir mit einem einfachen Transistorschalter, fügten im Laufe der Zeit Steine und Kacheln hinzu und bauten schließlich eine vollständige CPU. Natürlich handelt es sich auch um die grundlegendste CPU. Ich glaube, dass diese Artikelserie uns ein klares Verständnis der Schnittstelle zwischen Hardware und Software vermitteln kann. Alle Arten von Software, die wir im täglichen Leben verwenden, werden durch Programmanweisungen geschrieben. Jeder Befehl jedes Programms wird von vielen Transistorschaltern innerhalb der CPU verarbeitet und führt schließlich die gewünschte Aufgabe aus. |
„Hotspot Review | Wichtige Technologieereignisse ...
2021 Woche 51 Ausgabe 16 Gesamtausgabe 362 Hier i...
Vor Kurzem lief im ungarischen Audi-Werk offiziel...
In der langen Entwicklung der Esskultur ist „Wild...
Yoga ist heutzutage ein beliebter Sport und biete...
Laufen ist eine gängige Trainingsmethode. Es erfo...
Ich habe gehört, dass beim Abkühlen von gekochtem...
Am 18. März erregte ein Nachrichtenbericht, in de...
Ich denke, jeder kennt die Pferdestellung. Viele ...
Frauen erleben in den frühen Stadien der Schwange...
Heutzutage ist das Leben schnelllebig und die Men...
Die Zeiten, in denen Online-Fahrdienstvermittlung...
Obwohl die neuesten vom Ministerium für Industrie ...
Am 16. Dezember wurde das seltene Junge des Schwa...