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