Universelle Registermaschine Klaus Becker 2003
Programmierbare Systeme
Universelle Registermaschine als Rechnermodell Teil 1 Universelle Registermaschine als Rechnermodell
Verarbeitungseinheit 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 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: 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 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 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 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 0: 6 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 0: 6 1: 2 2: 0 3: 0 4: 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: 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 Eine Registermaschine bearbeitet beliebig eingebbare Daten nach einem fest vorgegebenen Programm.
Universelle Registermaschine Universelle Registermaschine als programmierbares System Programm 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 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 Kodierung CPU INC: 1 DEC: 2 JMP: 3 TST: 4 HLT: 5 Daten Programm 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 CPU Daten
Rechnerarchitektur (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
Befehl holen PC IR Akku Adressbus 3 0003 Arbeitsspeicher Steuerwerk 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 3 0003 IR 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 0000 6: 0 0000 7: 0 0005 8: 0 0003 .. 0 0000 PC 3 3 0003 IR 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 holen 0 10 1 10, 3, 11 2 0, 2 INC ausführen 10 12 11 12, 3, 7 12 12, 5 13 12, 4, 8, 13 14 0, 1 DEC ausführen 20 12 21 12, 3, 7 22 12, 6 23 12, 4, 8, 13 24 0, 1 JMP ausführen 30 12, 9 31 0, 1 TST ausführen 40 12 41 12, 3 42 12, 3, 14 43 13 44 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
Entwicklung einer universellen Registermaschine 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 Akku 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 0000 6: 0 0000 7: 0 0005 8: 0 0003 .. 0 0000 Arbeitsspeicher Akku Rechenwerk
RAM-Baustein nCS: nCS = 0: (notChipSelect) RAM-Baustein aktiv 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 Akku 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
Datenbus Datenbus Datenbus RAM Akku Akku RAM
Torsteuerung hades.models.rtlib.muxes.TriBuf Datenbus
tri-state-Verhalten S 1 E 1 A 1 S 1 E 1 A Z 1 S = 0: passiv 1 E 1 A 1 S 1 E 1 A Z 1 hochohmig S = 0: passiv S = 1: aktiv (durchlassen)
Schritt 5: Befehlsregister und 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 3 0003 IR Arbeitsspeicher Datenbus Akku Rechenwerk
Befehlsregister Adressbus Bussplitter Speicher Befehlsregister Datenbus Reset
Befehlsregister hades.models.rtlib.register.RegRE
Bussplitter 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 0000 6: 0 0000 7: 0 0005 8: 0 0003 .. 0 0000 PC 3 0003 IR Arbeitsspeicher Datenbus Akku Rechenwerk
Programmzähler Adressbus Programmzähler Befehlsregister Datenbus
Schritt 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 PC 3 0003 IR Arbeitsspeicher Datenbus Akku Rechenwerk
Nullentdeckung Datenbus hades.models.rtlib.compare.CompareEqual
Schritt 8: Steuerwerk PC IR Akku Adressbus 3 0003 Arbeitsspeicher 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 3 0003 IR Arbeitsspeicher Steuerwerk Datenbus Akku Rechenwerk
Steuerwerk Steuersignal Steuerwerk
Mikroprogramm Mikroprogramm Befehl holen 0 10 1 10, 3, 11 2 0, 2 INC ausführen 10 12 11 12, 3, 7 12 12, 5 13 12, 4, 8, 13 14 0, 1 ... Mikroprogramm
Ausführung des Mikroprogramms Befehl holen 0 10 1 10, 3, 11 2 0, 2 INC ausführen 10 12 11 12, 3, 7 12 12, 5 13 12, 4, 8, 13 14 0, 1 ... Mikroprogrammzähler Mikroprogrammzähler
Funktionseinheiten Programmzähler Befehlsregister Adressbus Arbeitsspeicher Datenbus Rechenwerk Steuerwerk Akkumulator
Funktionseinheiten PC IR Akku Adressbus Arbeitsspeicher Steuerwerk Datenbus Akku Rechenwerk
Literaturhinweise Klaus Merkert, Walter Zimmer: Handbuch zum Bonsai-Lehrcomputer. 1994. Siehe auch hsg.kaiserslautern.de/faecher/inf/material/bonsai