These are notes taken during the ReOrg practical course 2005. Sources are prepared in such a way that tutors can easily check if they were just copied from here. So do yourself a favor and don't copy it.
Versuchsvorbereitung¶
Wie schon erwähnt kann der Mikrocodespeicher entweder als ROM oder als RAM implementiert sein. Worin könnte eine mögliche Anwendung der Variante im veränderlichem Mikrocode (RAM) bestehen.
Änderung des Verhaltens (Befehlssatzes) wärend der Laufzeit
Einfaches Korrigieren von "Fehlern"
Beispiel: microcode
Wie gesehen macht die Form der stackbasierten Registerorganisation eine Angabe der Registeradresse im Befehl überflüssig. Ansonsten müsste ja bei mehreren Registern immer angegeben werden, welche Register betroffen sind. Diese "Sparmaßnahme" führt zu einer Reduktion der Befehlsbreite (Anzahl der benötigten Bits) und sollte ebenfalls unweigerlich zu einer höheren Codedichte führen. Warum ist die Aussage nur teilweise richtig?
Angabe jeder Leseoperation (siehe Beispiele in Vorbereitung)
Bei nicht Nulladressenmaschine kann Adresse direkt übergeben werden (weniger einzelne Lesebefehle notwendig)
Modifzierte Steuerwerkstabelle Stack-Architektur
Befehle
Phase
BR_EN
ARL_EN
ARH_EN
AA_EN
BB_EN
IP_LD
IP_CNT
RD
WR
ModRes
M1_S
M2_S
M3_S
M4_S
READ
F1
1
0
0
0
0
0
1
1
0
0
0
0
0
0
F2
0
1
0
0
0
0
1
1
0
0
0
0
0
0
F3
0
0
1
0
1
0
1
1
0
0
0
0
0
0
F4
0
0
0
1
0
0
0
1
0
0
1
1
1
1
WRITE
F1
1
0
0
0
0
0
1
1
0
0
0
0
0
0
F2
0
1
0
0
0
0
1
1
0
0
0
0
0
0
F3
0
0
1
0
0
0
1
1
0
0
0
0
0
0
F4
0
0
0
0
0
0
0
0
1
0
1
1
1
1
ADD
F1
1
0
0
0
0
0
1
1
0
0
0
0
0
0
F2
0
0
0
1
0
0
0
1
0
1
0
0
0
0
JUMP
F1
1
0
0
0
0
0
1
1
0
0
0
0
0
0
F2
0
1
0
0
0
0
1
1
0
0
0
0
0
0
F3
0
0
1
0
0
0
1
1
0
0
0
0
0
0
F4
0
0
0
0
0
1
0
0
0
0
1
1
1
1
Laut exakter Aufgabenstellung wird für WRITE ein Multiplexer benötigt, der in der letzten Phase den Eingang von AA zwischen dem normalen Eingang von AA und dem Ausgang von BB umschaltet (in dieser Phase muss AA_EN auf 1 sein). Um dies sauber zu lösen wird aber eine 5. Phase benötigt. Um diese 5. Phase zu umgehen, kann man die Phase 1 (Lesen in das BR) bei WRITE mit dem Zurückschreiben des Registers BB in AA zusammen legen. Dies sollte funktioniert, da das Lesen des neuen BR immer mit dem Steuervektor des alten BR ausgeführt wird.
Modifzierte Steuerwerkstabelle Akkumulator-Architektur
Befehle
Phase
BR_EN
ARL_EN
ARH_EN
AA_EN
IP_LD
IP_CNT
RD
WR
M1_S
M2_S
M3_S
M4_S
READ
F1
1
0
0
0
0
1
1
0
0
0
0
0
F2
0
1
0
0
0
1
1
0
0
0
0
0
F3
0
0
1
0
0
1
1
0
0
0
0
0
F4
0
0
0
1
0
0
1
0
1
1
1
1
WRITE
F1
1
0
0
0
0
1
1
0
0
0
0
0
F2
0
1
0
0
0
1
1
0
0
0
0
0
F3
0
0
1
0
0
1
1
0
0
0
0
0
F4
0
0
0
0
0
0
0
1
1
1
1
1
ADD
F1
1
0
0
0
0
1
1
0
0
0
0
0
F2
0
1
0
0
0
1
1
0
0
0
0
0
F3
0
0
1
0
0
1
1
0
0
0
0
0
F4
0
0
0
1
0
0
1
0
1
0
0
0
JUMP
F1
1
0
0
0
0
1
1
0
0
0
0
0
F2
0
1
0
0
0
1
1
0
0
0
0
0
F3
0
0
1
0
0
1
1
0
0
0
0
0
F4
0
0
0
0
1
0
0
0
1
1
1
1
Versuchen Sie den VHDL-Code der folgenden Aufgaben weitestgehend vorzubereiten!