Befehlsregistergröße in Prozessoren

Ich lerne Prozessorgrundlagen. Ich habe diesen Zweifel.

Wenn ich einen Prozessor mit 9 Ein-Byte-Befehlen und einem 2-Byte-Befehl in seiner Befehlssatzarchitektur habe, sollte das Befehlsregister des Prozessors nicht 16 Bit statt 8 Bit haben? Sagen Sie zum Beispiel:

2000  MOV A,B
2001  MVI C, 20h  --- 2 byte instruction

In meinem Buch steht, dass PC nach 2001 auf Adresse 2003 zeigt. Das heißt, als PC auf 2001 zeigte, wurden sowohl die 8-Bit-Sofortdaten als auch der 8-Bit-Opcode auf einmal in das Befehlsregister geholt, richtig? Oder wird es in zwei Zyklen abgerufen? Außerdem würde ich gerne wissen, welche Bedeutung Daten- und Befehls-Caches in einem Prozessor haben. Ist es in einem Prozessor notwendig?

Der zweite ist auch ein 8-Bit-Befehl mit Argumenten. Argumente werden in andere Register geladen.
Ihre Codebeispiele sehen aus wie 8080, 8085, Z80 usw. Anweisungen. All dies sind Cache-lose Prozessoren mit 8-Bit-Datenbus. mov a,b erfordert also eine Bustransaktion, während mvi c,20h zwei aufeinanderfolgende Bustransaktionen erfordert. Bei diesen einfachen Prozessoren wird PC für jede Bustransaktion um 1 erhöht (mit Ausnahme von Anweisungen vom Typ jmp, call, return, reset , bei denen der Inhalt von PC überschrieben wird).

Antworten (1)

Das Befehlsregister hält im Allgemeinen nur die Bits, die den "Opcode"-Teil eines Befehls bilden (einschließlich aller Bits, die Adressierungsmodi beeinflussen) für die Dauer der Ausführung des Befehls, so dass die Befehlsdecodierungslogik darauf zugreifen kann.

Alle Bytes in der Anweisung, die nur Operanden sind, werden im Allgemeinen nicht im Anweisungsregister gehalten.

Wenn die Busbreite des Prozessors nur 8 Bit beträgt, werden die zwei Bytes des Befehls in getrennten Zyklen abgerufen. Der zweite Zyklus wird ausgeführt, nachdem die Befehlsdekodierlogik entschieden hat, dass es ein zweites Byte als Ergebnis der Untersuchung des Opcodes im ersten Byte gibt.

Und nein, Caches sind für den Betrieb eines Prozessors nicht notwendig, aber sie helfen, Engpässe zu beseitigen, wenn der Prozessor schneller als der Hauptspeicher ist.

Hmm, hier liegen wirklich meine Zweifel. Zwei Abrufe bedeuten, dass der PC nach 2001 auf 2002 zeigen muss, richtig? Wenn es nach 2001 auf 2003 zeigt, wie können die Daten von 2002 im zweiten Zyklus aus dem Programmspeicher geholt werden?
Das ist ein Implementierungsdetail. Es ist wahrscheinlich, dass der PC während der Ausführung des Befehls vorübergehend auf 2002 zeigt, um das zweite Byte zu holen. Aber nachdem die Anweisung beendet ist, zeigt der PC auf 2003. Niemand hat jemals gesagt, dass es in einem einzigen Schritt von 2001 bis 2003 geht.
Es war eigentlich eine Frage auf dem PC ohne Angabe von Implementierungsdetails. Ich habe gerade die Antwort gelesen, da PC auf 2003 zeigen wird und die Erklärung: "PC zeigt auf die nächste Anweisung, die aus dem Speicher abgerufen werden soll". Das hat all diese Verwirrung verursacht :-)