460 likes | 614 Vues
Universelle Registermaschine. Klaus Becker 2003. Programmierbare Systeme. Teil 1. Universelle Registermaschine als Rechnermodell. Registermaschine. Adresse. Register. Progr.zähler. Befehl. 0: 5 1: 3 2: 0 3: 0 4: 0 .. . 0 JMP 3 1 INC 0 2 DEC 1 3 TST 1 > 4 JMP 1 5 HLT.
E N D
Universelle Registermaschine Klaus Becker 2003
Teil 1 Universelle Registermaschine als Rechnermodell
Registermaschine Adresse Register Progr.zähler Befehl 0: 51: 32: 03: 04: 0.. 0 JMP 3 1 INC 0 2 DEC 1 3 TST 1> 4 JMP 1 5 HLT Speicher (Registern) Verarbeitungseinheit
Registermaschinenbefehle Erhöhe Register i um 1.Gehe zu Zeile x+1. > x INC i Erniedrige Register i um 1.Gehe zu Zeile x+1. > x DEC i > x JMP i Gehe zu Zeile i. Wenn Register i ungleich 0 ist, dann gehe zu Zeile x+1, sonst zu Zeile x+2. > x TST i > x HLT Beende die Bearbeitung.
Registermaschine in Aktion 0: 51: 32: 03: 04: 0.. > 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 1> 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 1> 4 JMP 1 5 HLT 0: 51: 32: 03: 04: 0.. 0 JMP 3> 1 INC 0 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 1 3 TST 1 4 JMP 1 5 HLT 0: 61: 22: 03: 04: 0.. 0 JMP 3 1 INC 0 2 DEC 1> 3 TST 1 4 JMP 1 5 HLT
Einfache Registermaschine Registermaschine als programmgesteuertes System Daten Programm 0: 51: 32: 03: 04: 0.. > 0 JMP 3 1 INC 0 2 DEC 1 3 TST 1 4 JMP 1 5 HLT Eine Registermaschine bearbeitet beliebig eingebbare Daten nach einem fest vorgegebenen Programm.
Universelle 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.
Vereinheitlichung 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 00006: 0 0000 7: 0 0005 8: 0 0003 .. 0 0000 Programm CPU Daten
Rechnerarchitektur (nach von Neumann) Adressbus 0: 3 0003 1: 1 0007 2: 2 0008 3: 4 0008 4: 3 0001 5: 5 00006: 0 0000 7: 0 0005 8: 0 0003 .. 0 0000 PC IR Arbeitsspeicher Steuerwerk Datenbus Akku Rechenwerk
Befehl holen Adressbus 0: 3 0003 1: 1 0007 2: 2 0008 3: 4 0008 4: 3 0001 5: 5 00006: 0 0000 7: 0 0005 8: 0 0003 .. 0 0000 PC IR 0 3 0003 Arbeitsspeicher Steuerwerk Datenbus Akku Rechenwerk
Befehl dekodieren und ausführen Adressbus 0: 3 0003 1: 1 0007 2: 2 0008 3: 4 0008 4: 3 0001 5: 5 00006: 0 0000 7: 0 0005 8: 0 0003 .. 0 0000 PC IR 3 3 0003 Arbeitsspeicher Steuerwerk Datenbus Akku Rechenwerk
Fundamentalzyklus Wiederhole Befehl holen (fetch-Phase) Befehl dekodieren und ausführen (execute-Phase)
Steueralgorithmus 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
Steuerung 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
Teil 2 Entwicklung einer universellen Registermaschine
Zielsetzung Mit Hilfe vorgegebener Hardwarebausteinen soll ein einfacher, voll funktionsfähiger (Bonsai) Rechner entwickelt werden.
Schritt 1: Akku-Register Wir beginnen mit dem Akku-Register. Der hier benutzte Akku soll 8-Bit-Dateneinheiten aufnehmen können. Akku
Register-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
Registertest hades.models.rtlib.io.IpinVector hades.models.rtlib.io.OpinVector
Schritt 2: Rechenwerk Mit Hilfe des Rechenwerkes sollen Inkrementier- und Dekrementieroperationen ausgeführt werden Akku Rechenwerk
Rechenwerk hades.models.rtlib.arith.Decr hades.models.rtlib.arith.Incr hades.models.rtlib.muxes.Mux21
Schritt 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 00006: 0 0000 7: 0 0005 8: 0 0003 .. 0 0000 Arbeitsspeicher Akku Rechenwerk
RAM-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
RAM-Test RAM Akku Akku RAM
Schritt 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 00006: 0 0000 7: 0 0005 8: 0 0003 .. 0 0000 Arbeitsspeicher Datenbus Akku Rechenwerk
Datenbus Datenbus Datenbus RAM Akku Akku RAM
Torsteuerung hades.models.rtlib.muxes.TriBuf Datenbus
tri-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)
Schritt 5: Befehlsregister und Adressbus Adressbus 0: 3 0003 1: 1 0007 2: 2 0008 3: 4 0008 4: 3 0001 5: 5 00006: 0 0000 7: 0 0005 8: 0 0003 .. 0 0000 IR 3 0003 Arbeitsspeicher Datenbus Akku Rechenwerk
Befehlsregister Adressbus Bussplitter Speicher Befehlsregister Befehlsregister Datenbus Reset
Befehlsregister hades.models.rtlib.register.RegRE hades.models.rtlib.register.RegRE
Bussplitter hades.models.rtlib.io.BusTapBottom hades.models.rtlib.io.BusTapBottom
Bussystem 4-Bit-Adressbus Speicher mit 16 8-Bit-Registern Befehlsregister Befehlsregister 8-Bit-Datenbus
Schritt 6: Programmzähler Adressbus 0: 3 0003 1: 1 0007 2: 2 0008 3: 4 0008 4: 3 0001 5: 5 00006: 0 0000 7: 0 0005 8: 0 0003 .. 0 0000 PC IR 0 3 0003 Arbeitsspeicher Datenbus Akku Rechenwerk
Programmzähler Adressbus Programmzähler Befehlsregister Befehlsregister Datenbus
Schritt 7: Programmbeendung Adressbus 0: 3 0003 1: 1 0007 2: 2 0008 3: 4 0008 4: 3 0001 5: 5 00006: 0 0000 7: 0 0005 8: 0 0003 .. 0 0000 PC IR 0 3 0003 Arbeitsspeicher Datenbus Akku Rechenwerk
Nullentdeckung Datenbus hades.models.rtlib.compare.CompareEqual
Schritt 8: Steuerwerk Adressbus 0: 3 0003 1: 1 0007 2: 2 0008 3: 4 0008 4: 3 0001 5: 5 00006: 0 0000 7: 0 0005 8: 0 0003 .. 0 0000 PC IR 0 3 0003 Arbeitsspeicher Steuerwerk Datenbus Akku Rechenwerk
Steuerwerk Steuersignal Steuerwerk
Mikroprogramm Befehl holen0 101 10, 3, 112 0, 2 INC ausführen10 1211 12, 3, 712 12, 513 12, 4, 8, 1314 0, 1 ... Mikroprogramm
Ausfü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
Funktionseinheiten Programmzähler Befehlsregister Adressbus Arbeitsspeicher Datenbus Rechenwerk Steuerwerk Akkumulator
Funktionseinheiten Adressbus PC IR Arbeitsspeicher Steuerwerk Datenbus Akku Rechenwerk
Literaturhinweise Klaus Merkert, Walter Zimmer: Handbuch zum Bonsai-Lehrcomputer. 1994. Siehe auchhsg.kaiserslautern.de/faecher/inf/material/bonsai