CPU-Simulator einer Mikroprogramm-gesteuerten CPU

Dieter Pawelczak 


Grundlagen der Informatik - CPU-Simulator

Start: CPU-Simulator (leider nur noch uni-intern ausführbar wegen geänderter Sicherheitsregeln des Webauftrittes der UniBw)

Der Mikroprogramm-Simulator demonstriert die Funktionsweise einer Mikroprogramm-gesteuerten CPU. Die CPU ist in [1] beschrieben. Der Simulator unterstützt aktuell jedoch nur einen Teil der Maschinenanweisungen. Sowohl Maschinenprogramm als auch Mikroprogramm können online geändert werden.

 

Beispiele

Es sind 5 Beispiele vorinstalliert:
 
  • Zählen: Eine Zählerschleife über X
  • Multiplikation: Multiplikation von A und X, Ergebnis in A
  • Fibonacci-Zahlen (rekursiv): Eingabe X, Ergebnis in A
  • Fibonacci-Zahlen (iterativ) : Eingabe X, Ergebnis in A
  • Fakultät (rekursiv). Eingabe A, Ergebnis in A
 
Achtung: Die Beispiel-CPU rechnet nur mit 8-Bit. Bereichsüberschreitungen werden nicht abgefangen! Damit ergibt sich für die Fakultät ein Maximalwert von 5, und für Fibonacci-Zahlen 13.
Die Auswahl eines Beispiels hält die CPU an.
 

Steuerung

 
Die CPU wird mit dem Knopf Run gestartet bzw. angehalten. Die aktuellen Werte der Register A (Akku), X (Index), F (Flags), PC (Program-Counter), SP (Stack-Pointer) sowie der Stackinhalt und ggf. der Speicherinhalt werden für jeden Schritt angezeigt.
 
Die Ausführgeschwindigkeit lässt sich zwischen Slow und Maximum wählen. Alternativ kann die CPU mit der Step-Taste Schritt für Schritt ausgeführt werden. Die Taste Reset setzt die Hardware-Reset-Leitung. Die CPU führt dann mit den nächsten Schritten einen Reset durch.
 

Maschinenprogramm

Das Maschinenprogramm kann jederzeit editiert werden. Eine Änderung bei laufender CPU kann jedoch ein Rücksetzen bewirken.
Maschinenanweisungen können mit + hinzugefügt oder mit – gelöscht werden. Mit der Auswahlbox kann eine der verfügbaren Maschinenanweisungen ausgewählt werden. Einige Anweisungen benötigen einen Operanden. Dieser wird bei Neuauswahl auf 0x01 gesetzt, kann jedoch editiert werden. Bei Befehlen, die keinen Operanden aufweisen, dürfen auch keine eingegeben werden (da sie ansonsten als Maschinencode übernommen werden). Alle Angaben sind hexadezimal!
 
Folgende Befehle werden unterstützt:
 
Steuerung (ohne Operand)
 
RST HLT NOP RET
 
Steuerung mit Operand
 
JMP Const
CALL Const
JZ Const
JNZ Const
JC Const
JNC Const
JS Const
JNS Const
 
Akku ohne Operand
 
NEG A NOT A INC A DEC A SHL A SHR A ROL A ROR A


Akku mit Operand
 
MOV A, Const
ADD A, Const
SUB A, Const
SBC A, Const
ADC A, Const
AND A, Const
OR A, Const
XOR A, Const
CMP A, Const
MOV [Const],A
MOV A,[Const] 
 
Akku und Index
 
MOV A,X
MOV A,[X]
MOV X, A
MOV [X], A
MOV X, Const
MOV X,[X]
MOV X,[A]
MOV [Const],X
MOV X,[Const]
DEC X
INC X
ADD A,X
SUB A,X
ADC A,X
SBC A,X
CMPZ X
CMP A,X
CMPZ A
 
Stack
 
PUSH A
POP A
PUSH X
POP X
DEC SP
INC SP
 
 
Mikroprogramm
 
Das Mikroprogramm kann jederzeit editiert werden. Beachten Sie, dass die letzten 4 Zyklen in der Regel genutzt werden, um den nächsten Befehl (OpCode) zu laden. Sollten Sie diese Befehlsfolge verändern, kann es zu einer Blockierung der CPU führen.
Zum Editieren wählen Sie den entsprechenden Maschinenbefehl aus. Im Anschluss werden Ihnen die 8 möglichen Programmschritte aufgelistet. Jeder Schritt kann editiert werden. Der Knopf Show zeigt ihnen die im Befehl aktiven Leitungen (Show sollte nicht bei laufender CPU durchgeführt werden). Zur Vereinfachung der Mikroprogrammierung gelten folgende Konventionen:
 
  • Sn (signal): Schaltet die Signalleitung n [0..25], z.B. S0 zur Übernahme des OpCodes.
  • Zn (zero): Schaltet die Signalleitung bei aktivem Zero-Flag, z.B. Z2 zur Übernahme des PCs
  • Un (unqual): Schaltet die Signalleitung bei inaktivem Zero-Flag
  • Cn (carry):  Schaltet die Signalleitung bei aktivem Carry-Flag
  • In (inside): Schaltet die Signalleitung bei inaktivem Carry-Flag
  • Nn (negativ): Schaltet die Signalleitung bei aktivem Sign-Flag
  • Pn (positiv): Schaltet die Signalleitung bei inaktivem Sign-Flag
Signale werden mit Semikolon getrennt. Fehlerhafte Signale werden ignoriert.
 
Ein Speichern des Maschinen- bzw. Mikroprogramms ist derzeit leider nicht möglich.

 

[1] D. Pawelczak: Start in die Technische Informatik, Aachen: Shaker Verlag 2008