Title: Universelle%20Registermaschine
1Universelle Registermaschine
2Programmierbare Systeme
3Teil 1
Universelle Registermaschine als Rechnermodell
4Registermaschine
Register
Adresse
Befehl
Progr.zähler
0 JMP 3 1 INC 0 2 DEC 1 3 TST 1gt 4 JMP
1 5 HLT
0 51 32 03 04 0..
Speicher (Registern)
Verarbeitungseinheit
5Registermaschinenbefehle
Erhöhe Register i um 1.Gehe zu Zeile x1.
gt x INC i
Erniedrige Register i um 1.Gehe zu Zeile x1.
gt x DEC i
gt x JMP i
Gehe zu Zeile i.
Wenn Register i ungleich 0 ist, dann gehe zu
Zeile x1, sonst zu Zeile x2.
gt x TST i
gt x HLT
Beende die Bearbeitung.
6Registermaschine in Aktion
gt 0 JMP 3 1 INC 0 2 DEC 1 3 TST 1 4 JMP
1 5 HLT
0 51 32 03 04 0..
0 JMP 3 1 INC 0 2 DEC 1gt 3 TST 1 4 JMP
1 5 HLT
0 51 32 03 04 0..
0 JMP 3 1 INC 0 2 DEC 1 3 TST 1gt 4 JMP
1 5 HLT
0 51 32 03 04 0..
0 JMP 3gt 1 INC 0 2 DEC 1 3 TST 1 4 JMP
1 5 HLT
0 51 32 03 04 0..
0 JMP 3 1 INC 0gt 2 DEC 1 3 TST 1 4 JMP
1 5 HLT
0 61 32 03 04 0..
0 JMP 3 1 INC 0 2 DEC 1gt 3 TST 1 4 JMP
1 5 HLT
0 61 22 03 04 0..
7Einfache Registermaschine
Registermaschine als programmgesteuertes System
Programm
Daten
gt 0 JMP 3 1 INC 0 2 DEC 1 3 TST 1 4 JMP
1 5 HLT
0 51 32 03 04 0..
Eine Registermaschine bearbeitet beliebig
eingebbare Daten nach einem fest vorgegebenen
Programm.
8Universelle Registermaschine
Universelle Registermaschine als programmierbares
System
0 JMP 3 1 INC 0 2 DEC 1 3
TST 1 4 JMP 1 5 HLT
0 0 0005 1 0 0003 .. 0 0000
Programm
Daten
Speicher (Registern)
Verarbeitungseinheit
Eine universelle Registermaschine bearbeitet
beliebig eingebbare Daten nach einem beliebig
vorgegebenen Programm.
9Vereinheitlichung von Programm und Daten
0 JMP 3 1 INC 0 2 DEC 1 3
TST 1 4 JMP 1 5 HLT 0 0
0005 1 0 0003 .. 0 0000
Programm
Kodierung
CPU
INC 1 DEC 2 JMP 3 TST 4 HLT 5
Daten
0 3 0003 1 1 0007 2 2 0008 3 4
0008 4 3 0001 5 5 0000 6 0 0000
7 0 0005 8 0 0003 .. 0 0000
Programm
CPU
Daten
10Rechnerarchitektur (nach von Neumann)
Adressbus
0 3 0003 1 1 0007 2 2 0008 3 4
0008 4 3 0001 5 5 0000 6 0 0000
7 0 0005 8 0 0003 .. 0 0000
PC
IR
Arbeitsspeicher
Steuerwerk
Datenbus
Akku
Rechenwerk
11Befehl holen
Adressbus
0 3 0003 1 1 0007 2 2 0008 3 4
0008 4 3 0001 5 5 0000 6 0 0000
7 0 0005 8 0 0003 .. 0 0000
PC
IR
0
3 0003
Arbeitsspeicher
Steuerwerk
Datenbus
Akku
Rechenwerk
12Befehl dekodieren und ausführen
Adressbus
0 3 0003 1 1 0007 2 2 0008 3 4
0008 4 3 0001 5 5 0000 6 0 0000
7 0 0005 8 0 0003 .. 0 0000
PC
IR
3
3 0003
Arbeitsspeicher
Steuerwerk
Datenbus
Akku
Rechenwerk
13Fundamentalzyklus
Wiederhole Befehl holen (fetch-Phase) Befehl
dekodieren und ausführen (execute-Phase)
14Steueralgorithmus
Wiederhole Befehl holen Befehl dekodieren
und ausführen
Befehl holen
WIEDERHOLE PC ? ABus PC ? ABus RInhalt ?
DBus DBus ? IR op Operatorteil(IR) adr
Adressteil(IR) FALLS op 1 adr ?
ABus adr ? ABus RInhalt ? DBus DBus ? Akku
adr ? ABus upAkku adr ?
ABus Akku ? DBus DBus ? RInhalt IncPC
2 // analog 3 adr ?ABus ABus ? PC
4 adr ? ABus adr ? ABus Registerinhalt
? DBus WENN DBus 0 DANN IncPC IncPC BIS
op 5 // HLT
Befehl dekodieren
INC-Befehl ausführen
JMP-Befehl ausführen
TST-Befehl ausführen
15Steuerung durch ein Mikroprogramm
Befehl holen0 101 10, 3, 112 0, 2 INC
ausführen10 1211 12, 3, 712 12, 513 12, 4, 8,
1314 0, 1 DEC ausführen20 1221 12, 3, 722 12,
623 12, 4, 8, 1324 0, 1 JMP ausführen 30 12,
931 0, 1 TST ausführen 40 1241 12, 342 12, 3,
1443 1344 0, 1
WIEDERHOLE PC ? ABus PC ? ABus RInhalt ?
DBus Dbus ? IR op Operatorteil(IR) adr
Adressteil(IR) FALLS op 1 adr ?
ABus adr ? ABus RInhalt ? DBus DBus ? Akku
adr ? ABus upAkku adr ?
ABus Akku ? DBus DBus ? RInhalt IncPC
2 // analog 3 adr ?ABus ABus ? PC
4 adr ? ABus adr ? ABus Registerinhalt
? DBus WENN DBus 0 DANN IncPC IncPC BIS
op 5 // HLT
16 17Teil 2
Entwicklung einer universellen Registermaschine
18Zielsetzung
Mit Hilfe vorgegebener Hardwarebausteinen soll
ein einfacher, voll funktionsfähiger (Bonsai)
Rechner entwickelt werden.
19Schritt 1 Akku-Register
Wir beginnen mit dem Akku-Register. Der hier
benutzte Akku soll 8-Bit-Dateneinheiten aufnehmen
können.
Akku
20Register-Baustein
hades.models.rtlib.register.RegRE
CLK Takt-Eingang (Register reagiert b.
steigender Taktflanke)
NR Reset-Eingang (NR 0 Reset)
ENA Enable-Eingang (ENA 1 Register bereit
zum Lesen)
D Daten-Eingang
Q Daten-Ausgang
21Registertest
hades.models.rtlib.io.IpinVector
hades.models.rtlib.io.OpinVector
22Schritt 2 Rechenwerk
Mit Hilfe des Rechenwerkes sollen Inkrementier-
und Dekrementieroperationen ausgeführt werden
Akku
Rechenwerk
23Rechenwerk
hades.models.rtlib.arith.Decr
hades.models.rtlib.arith.Incr
hades.models.rtlib.muxes.Mux21
24Schritt 3 Arbeitsspeicher
Die im Akku-Register zu verarbeitenden Daten
sollen aus einem Arbeitsspeicher geholt und
wieder gespeichert werden.
0 3 0003 1 1 0007 2 2 0008 3 4
0008 4 3 0001 5 5 0000 6 0 0000
7 0 0005 8 0 0003 .. 0 0000
Arbeitsspeicher
Akku
Rechenwerk
25RAM-Baustein
hades.models.rtlib.memory.RAM
nCS nCS 0 (notChipSelect) RAM-Baustein aktiv
nWE nWE 0 DIN ? adressiertes Register nWE
1 adressiertes Register ? DOUT
A Adress-Eingang
DIN Daten-Eingang
DOUT Daten-Ausgang
26RAM-Test
RAM ? Akku
Akku ? RAM
27Schritt 4 Datenbus
Der Datenaustausch zwischen dem Arbeitsspeicher
und dem Akku-Register soll über einen Datenbus
erfolgen.
0 3 0003 1 1 0007 2 2 0008 3 4
0008 4 3 0001 5 5 0000 6 0 0000
7 0 0005 8 0 0003 .. 0 0000
Arbeitsspeicher
Datenbus
Akku
Rechenwerk
28Datenbus
Datenbus
Datenbus
RAM ? Akku
Akku ? RAM
29Torsteuerung
hades.models.rtlib.muxes.TriBuf
Datenbus
30tri-state-Verhalten
S 0 0 1 1
E 0 1 0 1
A 0 0 0 1
S 0 0 1 1
E 0 1 0 1
A Z Z 0 1
hochohmig
S 0 passiv S 1 aktiv (durchlassen)
31Schritt 5 Befehlsregister und Adressbus
Adressbus
0 3 0003 1 1 0007 2 2 0008 3 4
0008 4 3 0001 5 5 0000 6 0 0000
7 0 0005 8 0 0003 .. 0 0000
IR
3 0003
Arbeitsspeicher
Datenbus
Akku
Rechenwerk
32Befehlsregister
Adressbus
Bussplitter
Speicher
Befehlsregister
Befehlsregister
Datenbus
Reset
33Befehlsregister
hades.models.rtlib.register.RegRE
hades.models.rtlib.register.RegRE
34Bussplitter
hades.models.rtlib.io.BusTapBottom
hades.models.rtlib.io.BusTapBottom
35Bussystem
4-Bit-Adressbus
Speicher mit 16 8-Bit-Registern
Befehlsregister
Befehlsregister
8-Bit-Datenbus
36Schritt 6 Programmzähler
Adressbus
0 3 0003 1 1 0007 2 2 0008 3 4
0008 4 3 0001 5 5 0000 6 0 0000
7 0 0005 8 0 0003 .. 0 0000
IR
PC
3 0003
0
Arbeitsspeicher
Datenbus
Akku
Rechenwerk
37Programmzähler
Adressbus
Programmzähler
Befehlsregister
Befehlsregister
Datenbus
38Schritt 7 Programmbeendung
Adressbus
0 3 0003 1 1 0007 2 2 0008 3 4
0008 4 3 0001 5 5 0000 6 0 0000
7 0 0005 8 0 0003 .. 0 0000
IR
PC
3 0003
0
Arbeitsspeicher
Datenbus
Akku
Rechenwerk
39Nullentdeckung
Datenbus
hades.models.rtlib.compare.CompareEqual
40Schritt 8 Steuerwerk
Adressbus
0 3 0003 1 1 0007 2 2 0008 3 4
0008 4 3 0001 5 5 0000 6 0 0000
7 0 0005 8 0 0003 .. 0 0000
IR
PC
3 0003
0
Arbeitsspeicher
Steuerwerk
Datenbus
Akku
Rechenwerk
41Steuerwerk
Steuersignal
Steuerwerk
42Mikroprogramm
Befehl holen0 101 10, 3, 112 0, 2 INC
ausführen10 1211 12, 3, 712 12, 513 12, 4, 8,
1314 0, 1 ...
Mikroprogramm
43Ausführung des Mikroprogramms
Befehl holen0 101 10, 3, 112 0, 2 INC
ausführen10 1211 12, 3, 712 12, 513 12, 4, 8,
1314 0, 1 ...
Mikroprogrammzähler
Mikroprogrammzähler
44Funktionseinheiten
Programmzähler
Befehlsregister
Adressbus
Arbeitsspeicher
Datenbus
Rechenwerk
Steuerwerk
Akkumulator
45Funktionseinheiten
Adressbus
PC
IR
Arbeitsspeicher
Steuerwerk
Datenbus
Akku
Rechenwerk
46Literaturhinweise
Klaus Merkert, Walter Zimmer Handbuch zum
Bonsai-Lehrcomputer. 1994. Siehe
auchhsg.kaiserslautern.de/faecher/inf/material/bo
nsai