Logisim Prozessor

URL: ../..dic/rechnerarchitektur/logisim_prozessor.html

Logisim Prozessor

Allgemeines link symbol

Zur Übung wird ein Prozessor mit Hilfe von Logisim entwickelt. Vorgaben:

  • 8 Bit Register und Datenbus
  • Befehlsformat: 8 Bit (mit optionaler 8 Bit Konstante hinter dem Befehl)
  • Befehls- und Datenspeicher: jeweils 256 Bytes
  • Register: Akkumulator A, Indexregister IX

Das vollständige Prozessormodell für Logisim steht für Übungszwecke zur Verfügung.

Aufbau link symbol

Datenpfad link symbol

Datenpfad

Der Datenpfad stellt mittels Multiplexer und Enable Signale die Verbindung der einzelnen Register und Funktionseinheiten her. Im Datenpfad sieht man die Register (A, IX), die Arithmetisch-Logische Recheneinheit (kurz ALU) und den Datenspeicher.

ALU link symbol

Die Arithmetisch-Logische Einheit besitzt zwei Eingänge für Operanden (A, B), einen Eingang zur Auswahl der durchzuführenden Rechenoperation (OpALU), einen Ergebnisausgang und zwei Statusflags (Carry, Zero).

Übersicht über die Operationen:

OpALUOperationBeschreibung
000Result=ALegt Operand A auf den Ausgang
001Result=BLegt Operand B auf den Ausgang
010Result=A+BAddiert A und B
011Result=A-BSubtrahiert B von A
100Result=A AND BBitweise UND Verknüpfung
101Result=A OR BBitweise OR Verknüpfung
110Result=A EOR BBitweise Exclusive-OR Verknüpfung
111Result=A>>1Logisches Rechtsschieben von Operand A

Das Linksschieben ist nicht als eigene Operation angeführt. Dazu kann aber die Addition genutzt werden. Eine Addition von x mit x entspricht x*2 oder einer Linksschiebe-Operation. Das Invertieren aller Bits kann auch mittels Exclusive-OR realisiert werden, indem die Exclusive-ODER Operation mit dem Register A und der Konstante 0xFF durchgeführt wird.

Realisierung ALU

MuxALU link symbol

Der Operand B der ALU kann entweder aus dem Datenspeicher stammen oder als Konstante aus dem Befehlsspeicher (Immed) kommen.

MuxMA link symbol

Die Adresse des Datenspeichers kann entweder aus dem Indexregister IX oder als Konstante aus dem Befehlsspeicher kommen.

EnA, En, StM link symbol

Die Signale EnA (Enable A), EnIX (Enable IX) und StM (Store Memory) dienen zur Speicherung der Daten. Eine 1 bewirkt die Übernahme der Daten vom Eingang des Registers in den Speicher des Registers (bei der nächsten steigenden Taktflanke).

Beispiele link symbol

Betrachtet man nun nur den Datenpfad können verschiedene Operationen realisiert werden.

BefehlEnAEnIXStMMuxALUMuxMAOpALUBeschreibung
ld A, Imm.1001X001Lädt Register A mit Konstante Imm.
ld A, (IX)10000001Lädt Register A mit Wert an Adresse IX
ld A, (Imm.)10001001Lädt Register A Wert an der Adresse Imm.
ld IX, A010XX000Lädt Register IX mit dem Wert aus Register A
ld IX, Imm.0101X001Lädt Register IX mit der Konstante Imm.
st (IX), A001X0000Speichert Register A an die Adresse IX
st (Imm.), A001X1000Speichert Register A an die Adresse Imm.
add A, Imm.1001X010Addiert zu Register A eine Konstante
add A, (IX)10000010Addiert zu Register A der Wert an Adresse IX
add A, (Imm.)10001010Addiert zu Register A der Wert an Adresse Imm.
nop000XXXFührt keine Operation aus (No Operation)

Steuerwerk link symbol

Steuerwerk

Das Steuerwerk dient zur Steuerung des Datenpfades.

PC link symbol

Die Befehle werden mittels PC (Program Counter) adressiert. Das Register PC wird um eins erhöht, um den nächsten Befehl adressieren zu können. Bei einem Sprung wird das Register PC mit einer Konstante aus dem Befehlsspeicher geladen.

Befehlsspeicher link symbol

Der Befehls- und Datenspeicher sind getrennt voneinander. Man spricht auch von getrennten Adressräumen. Dies entspricht dem Harvard-Modell.

IR link symbol

Das Register IR (Instruction Register) speichert den aktuellen Befehl. Dies ist notwendig, da die Befehlsausführung in zwei Takten erfolgt.

Die Befehlsausführung geschieht in zwei Schritten:

  1. Fetch: Der Befehl wird mittels PC adressiert, aus dem Befehlsspeicher geholt und im Register IR gespeichert.
  2. Decode and Execute: Der Befehl wird dekodiert und ausgeführt. Dabei wird der Datenpfad entsprechend der Signale aus dem Instruktionsdekoder gesteuert.

Instruktionsdekoder link symbol

Instruktionsdekoder

Der Instruktionsdekoder ist Teil des Steuerwerks. Ein Befehl wird dekodiert und die entsprechenden Signale für Multiplexer, Register usw. gesetzt.

Intruktionsdekoder intern

Beim internen Aufbau unseres Instruktionsdekoders sieht man, dass das Befehlsbyte in verschiedene Bereiche eingeteilt ist.

  • IType (2 Bit): 00 - Datenoperation, 01 - Spungbefehl
  • ITarget (2 Bit)): 00 - Speichert in Register A, 01 - Register IX, 10 - Datenspeicher, 11 - keine Speicherung
  • IImmed (1 Bit): Der Befehl verwendet eine Konstante aus dem Befehlsspeicher
  • IParam (3 Bit): Bei Datenoperationen: Wert für OpALU, bei Sprungbefehlen: Art des Bedingten Sprungs

Das im Befehlsspeicher enthaltene Programm dekodiert sich damit folgenderweise:

AdresseWertAssemblerBedeutung
0x000x19ld IX, 0x05Lädt IX mit der Konstante 0x05
0x010x05 Konstante gehört zum vorherigen Befehl
0x020x01ld A, (IX)Lädt den Wert von der Adresse IX
0x030x0aadd A, 0x03Addiert zum Register A die Konstante 0x03
0x040x03 Konstante gehört zum vorherigen Befehl
0x050x20st (IX), ASpeicher Register A an der Adress IX
0x060x48jmp 0x03Springe zur Adresse 0x03
0x070x03 Konstante gehört zum vorherigen Befehl

Einschränkungen link symbol

Unser Prozessorbeispiel beinhaltet weit nicht alle Funktionen eines mächtigeren Prozessors. So fehlt etwa ein Stackpointer oder die Möglichkeit, das PC Register zu sichern. Dies wäre notwendig, um aus Subroutinen zurückzukehren.