Hardware Reference
In-Depth Information
Als Sprungbedingung wird das Ergebnis einer vorherigen Verarbeitungsope-
ration ausgewertet, ob es größer, gleich oder kleiner null ist oder ob es einen
oder keinen Übertrag gegeben hat. Die Schaltung für die Berechnung, ob der
Sprung auszuführen ist oder nicht, wertet dazu die Flags aus, die im Register
»Ergebnis« mitgespeichert sind.
Abbildung 5.22 zeigt die Schaltung für einen Sprung zu einer Register-
adresse, bei dem die um eins erhöhte Folgeadresse des Befehlszählers in ein
Register gespeichert wird. Der Datenfluss in der Befehlsholphase (IF) ist iden-
tisch mit dem der anderen Befehle. In der Operandenholphase (OF) wird
nur einer statt zwei Operanden aus dem Registersatz gelesen, der in den Be-
fehlszähler »PCount«, statt in das Operandenregister übergeben wird. Das
Operandenregister übernimmt statt dessen den um eins erhöhten Befehlszäh-
lerstand. In das Operationscoderegister wird wie bei dem Befehl zum Laden
einer Konstanten ein Operationscode geschrieben, der in der Ausführungspha-
se bewirkt, dass der Operand mit der Rücksprungadresse unverändert in das
Ergebnisregister kopiert wird, um dann in der Ergebnis-Schreib-Phase weiter
in das adressierte Register übernommen zu werden. Dadurch, dass die Zu-
weisung an den Befehlszähler erst in der OF-Phase erfolgt, wird nach jedem
Sprungbefehl erst der Folgebefehl auf der nächsten Adresse ausgeführt, bevor
der Sprung wirksam wird.
Befehls-
ARegY1 ARegY2
speicher
Registersatz
PCount
Instr
ROM
+1
Opcode
x 1
a 1
RAM y 1
sopcmov
1 w 1
ORegA Ergeb-
IF
x 2
a 2
0 w 2
y 2
nis
ALU
Flags
OFundSprung
RW
EX
Abb. 5.22. Sprung-Pipeline mit Speicherung der Rücksprungadresse
Abbildung 5.23 zeigt den Register-Transfer-Fluss für bedingte Sprünge
zu einer variablen, in einem Register gespeicherten Adresse. Der Datenfluss
in der Befehlsholphase (IF) ist wieder derselbe. In der Operandenholphase
(OF) steuert die Schaltung zur Berechnung der Sprungbedingung über einen
Multiplexer, ob der Befehlszähler »PCount« den Inhalt des adressierten Re-
gisters oder seinen um eins erhöhten Wert übernimmt. Über die Kontrollregis-
ter »Ctrl_EX« und »Ctrl_RW« wird an die Ergebnisschreibphase (RW) eine
Bitvektorkonstante geschickt, die das Schreibsignal für den Datenspeicher und
den Registersatz deaktiviert, damit keine Ergebnisdaten geschrieben werden.
 
Search WWH ::




Custom Search