Woher weiß ein Prozessor, was die verschiedenen Befehle bedeuten?
Ich denke an Befehle auf Assembly-Ebene wie MOV, PUSH, CALL, etc ...
cpu
computer-architecture
cpu-architecture
Simon Verbeke
quelle
quelle
Antworten:
Wenn ein Computer Anweisungen auf Baugruppenebene interpretiert , werden diese Anweisungen in ihre binären Entsprechungen umgewandelt, damit die CPU sie lesen kann. Wenn die CPU die Befehle ausführt, interpretiert sie den Operationscode-Teil des Befehls in einzelne "Mikroprogramme", die ihre Mikrocode- Äquivalente enthalten. Nur damit Sie wissen, besteht eine vollständige Montageanleitung aus einem Opcode und allen dazugehörigen Daten (z. B. Registernamen, Speicheradressen).
Mikrocodebefehle sind extrem niederpegelig (mehr als Assemblierung) und steuern die tatsächlichen digitalen Signale, die den Logikfluss im Mikroprozessor steuern. Beispielsweise könnte ein Mikrocode-Befehl ein Bedingungscode-Register- Flag mit einem neuen Wert aktualisieren oder ein CPU- Register mit einer der ALU- Einheiten verbinden. Es sind komplexere Aufgaben möglich, aber dies zeigt Ihnen die allgemeine Idee, wofür der Mikrocode verwendet wird.
Der allgemeine Ablauf von der Kompilierung bis zur Ausführung sieht wie folgt aus. Die Montageanweisungen werden zusammengesetzt (in ihre binären äquivalenten Nullen und Einsen oder von nun an in logische Signale umgewandelt). Diese Logiksignale werden wiederum von der CPU interpretiert und in Logiksignale mit niedrigerem Pegel umgewandelt, die den Fluss der CPU anweisen, den bestimmten Befehl auszuführen. Dies kann abhängig von der Architektur und dem Design des Prozessors einen oder mehrere Taktzyklen dauern (die meisten Referenzhandbücher für Prozessoren geben an, wie viele Taktzyklen für die Ausführung eines bestimmten Befehls erforderlich sind, z. B. dieser ).
All dies geschieht mit einem fest programmierten Mikrocode (der physisch in den Prozessor in eine Art ROM eingebettet ist , der während der Herstellung eingestellt wird), der den Fluss durch die tatsächlichen Logikgatter auf niedriger Ebene lenkt . Dies bietet eine Schnittstelle zwischen den abstrakten Montageanweisungen und der physischen elektrischen Logik im Prozessor.
Zusammenfassend werden also Prozessoranweisungen vom Prozessor zusammengestellt und geladen. Der Prozessor wird dann diese Anweisungen verwenden, um das Mikroprogramm (in Form eines Mikrocodes) nachzuschlagen, das dieser bestimmten Anweisung entspricht, die "tatsächlich" die Anweisung ausführt. Sobald die Mikrocodes für den bestimmten Befehl ausgeführt wurden (was einen oder mehrere Taktzyklen dauern kann), führt der Prozessor den Mikrocode aus, um den nächsten Befehl abzurufen, und der Zyklus wird wiederholt.
quelle
Der Prozessor "weiß" nicht wirklich, was die Befehle sind. Die Befehle sind nur binäre Muster, die den Prozessor dazu veranlassen, das zu tun, was wir unter Befehlen verstehen.
Beispielsweise bewirkt eine ADD-R1-in-R2-Operation, dass die Werte der Register 1 und 2 die ALU (Arithmetik- und Logikeinheit) erreichen, dass die ALU den Ausgang des Addierers anstelle der verschiedenen anderen Daten verwendet und die Ausgang der ALU, um den Wert in Register 2 zu ersetzen. Es gibt einfache Logikschaltungen, um all diese Dinge zu erreichen ( Multiplexer , Addierer , Zähler , ...), obwohl echte Prozessoren sehr komplizierte Optimierungen verwenden.
Es ist so, als würdest du fragen, wie ein Auto langsamer werden kann, wenn du auf die Bremse drückst. Das Auto weiß es nicht, das Bremspedal steuert indirekt, wie stark die Bremsbeläge gegen die Räder gedrückt werden.
quelle
http://en.wikipedia.org/wiki/Assembler_language
Mit anderen Worten, wenn Sie Ihr Assemblerprogramm "zusammenstellen", folgen Sie Ihren Anweisungen wie
MOV AL, 61h
werden in Zahlen umgewandelt, denen die CPU eine besondere Bedeutung zuordnet und dann entsprechend handelt.
quelle
Vorgeschlagene Literatur:
Beachten Sie auch die Kursnotizen aus CS152: Computer Architecture and Engineering an der UC Berkeley, einem Kurs, in dem Studenten eine CPU implementieren.
Wenn Sie für "hausgemachte CPU" googeln, finden Sie viele Leckereien.
quelle
Auf der untersten Ebene kann die CPU lediglich etwas hinzufügen. Von Addition kann subtrahiert, multipliziert und dividiert werden (da dies nur Addition auf andere Weise ist). Die CPU verwendet dies, um Daten im Speicher zu verschieben, indem die Additionen auf die Speicheradressen angewendet werden.
Beachten Sie jedoch, dass dies auf dem niedrigstmöglichen Niveau ist. Die CPU "versteht" tatsächlich bestimmte Befehle in Form eines Mikrocodes. Siehe die Antwort von Breakthrough, sie ist sehr gut geschrieben.
quelle
Ich habe unter programmers.stackexchange.com eine entsprechende Antwort gegeben. Weitere Informationen finden Sie unter Funktionsweise von Computern. Dabei habe ich mich von Grund auf kurz damit beschäftigt, wie Computer Anweisungen interpretieren, um Elektronen zu bewegen.
quelle