ReOrg Praktikum 5

by

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

  1. 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

  2. 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)

  3. 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.

  4. 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

  5. Versuchen Sie den VHDL-Code der folgenden Aufgaben weitestgehend vorzubereiten!

    unter Aufgaben