MI-Folien (1) - LRR - TUM
MI-Folien (1) - LRR - TUM
MI-Folien (1) - LRR - TUM
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Einführung in die Rechnerarchitektur (ERA)<br />
Zentralübung am 6. Dezember 2013<br />
Mikroprogrammierung (1): Leitwerk und<br />
Maschinenbefehls-Interpretationsschleife<br />
Ausblick auf Speicher/Rechenwerk<br />
Dr. Josef Weidendorfer<br />
e-mail: weidendo@in.tum.de<br />
Büro: 01.06.55<br />
c○Josef Weidendorfer (und Max Walter/Roland Wismüller), TU München 1
Bisher: Assemblerprogrammierung<br />
➥ Ziel: Wie wird ein Rechner auf Assemblerebene<br />
programmiert?<br />
➥ Warum nicht höhere Programmiersprachen?<br />
➥ fördert Verständnis<br />
➥ dient z.B. dazu, effizient C, C++ und Java zu<br />
programmieren<br />
➥ Wer entwickelt höhere Programmiersprachen?<br />
➥ Informatiker!
Jetzt: Mikroprogrammierung<br />
➥ Ziel: Was passiert im Prozessor, was macht<br />
➥ Rechenwerk<br />
➥ Speicher<br />
➥ Leitwerk<br />
➥ bei der Ausführung eines Maschinenbefehls?<br />
➥ Warum?<br />
➥ fördert Verständnis<br />
➥ dient z.B. dazu, Mikroprozessoren effizient zu benutzen<br />
➥ Wer entwickelt Mikroprozessoren?<br />
➥ Informatiker!
Begriffe<br />
➥ Maschinenprogramm<br />
➥ besteht aus Maschinenbefehlen<br />
➥ von Assembler erzeugt<br />
➥ steht im Hauptspeicher<br />
➥ Mikroprogramm<br />
➥ befindet sich im Leitwerk des Rechners<br />
➥ ist entweder fest (bei Fertigung des Leitwerks)<br />
➥ oder programmierbar (wie in unserem Beispiel)<br />
➥ ist eine Möglichkeit, Maschinenbefehle zu implementieren
Warum nicht reale Maschinen?<br />
➥ Auch moderne Prozessoren oft mikroprogrammiert<br />
➥ Mikroprogramm oft fest (nicht mikroprogrammierbar)<br />
➥ teilweise programmierbar, aber nicht dokumentiert<br />
➥ in jedem Fall sehr kompliziert<br />
➥ Nur Mittel zum Zweck: die ERA <strong>MI</strong>-Maschine<br />
➥ an TU-München entworfen (basierend auf AMD-ICs von<br />
1980)<br />
➥ keine praktische Relevanz<br />
➥ Aber: Prinzipien mit realen Maschinen vergleichbar<br />
➥ Simulator: JMic (auf Webseite)
Thema heute: Das Leitwerk
Von-Neumann’s Konzept<br />
1. Struktur: Leitwerk, Speicher, Rechenwerk, E/A-Werk<br />
2. Struktur problemunabhängig<br />
3. Programm und Daten im selben Speicher<br />
4. Speicher besteht aus Zellen fester Größe,<br />
fortlaufend nummeriert (Adressen)<br />
5. Programm = Folge von Befehlen,<br />
i.a. nacheinander ausgeführt<br />
6. Sprungbefehle: Fortsetzung an anderer Stelle<br />
7. Binäre Codes, Dualsystem
Leitwerk<br />
Speicher<br />
Rechenwerk<br />
E/A−Werk
Adressen<br />
Daten<br />
Leitwerk<br />
Speicher<br />
Rechenwerk<br />
E/A−Werk
Adressen<br />
Daten<br />
Leitwerk<br />
Speicher<br />
Operation<br />
Rechenwerk<br />
Operation<br />
E/A−Werk<br />
Operation
Adressen<br />
Speicher<br />
Daten<br />
Status<br />
Operation<br />
Leitwerk<br />
Rechenwerk<br />
Status<br />
Operation<br />
E/A−Werk<br />
Status<br />
Operation
Adressen<br />
Speicher<br />
Daten<br />
Status<br />
Operation<br />
Leitwerk<br />
Rechenwerk<br />
Status<br />
Operation<br />
E/A−Werk<br />
Status<br />
Operation
Adressen<br />
Speicher<br />
Daten<br />
Status<br />
Operation<br />
Leitwerk<br />
IR<br />
OpCode<br />
A<br />
B<br />
BZ<br />
Rechenwerk<br />
Status<br />
Operation<br />
BZ: Befehlszähler<br />
IR: Instruktionsregister<br />
E/A−Werk<br />
Status<br />
Operation
Was tut das Leitwerk?<br />
1. Nächsten Befehl aus Speicher holen<br />
➥ Speicherzelle mit Adresse BZ nach IR laden<br />
➥ BZ erhöhen<br />
2. Befehl dekodieren<br />
➥ einfach, falls festes Format<br />
bei uns: OpCode, RA-Adresse, RB-Adresse<br />
3. Befehl ausführen<br />
➥ Operation auf Operanden anwenden (evtl. Modif. des BZ)<br />
➠Steuersignale für andere Werke erzeugen<br />
abhängig von OpCode und evtl. anderen Bedingungen
Realisierung des Leitwerks<br />
➥ Benötigt: Apparat, der abhängig von einer Eingabe eine Folge<br />
von Ausgaben produziert.<br />
➥ Formal: endlicher Automat (hier: Moore)<br />
➥ endliche Zustandsmenge Z<br />
➥ Ausgabefunktion λ(z)<br />
➥ Zustandsübergangsfunktion δ(z, e)<br />
➥ Ein Automat ist immer in einem bestimmten Zustand z.<br />
➥ In diesem Zustand gibt er λ(z) aus<br />
➥ und geht in den Nachfolgezustand z ′ = δ(z, e) über.<br />
➥ Dabei ist e die externe Eingabe.
Steuerung einer Druckampel<br />
Beispiel eines Automaten<br />
Knopf nicht<br />
gedrückt<br />
Eingabe<br />
leere Eingabe<br />
Zustandsübergang<br />
0<br />
Knopf<br />
gedrückt<br />
1 2 3<br />
Zustand<br />
Ausgabe<br />
Autofahrerampel<br />
Fußgängerampel<br />
Dieser Automat arbeitet getaktet!
Die Ampel als mikroprogrammierbare Maschine
Die Ampel als mikroprogrammierbare Maschine<br />
Mikroinstruktions−<br />
register
Die Ampel als mikroprogrammierbare Maschine<br />
Mikroprogrammspeicher<br />
rot<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
grün<br />
0:<br />
0<br />
0 1 1 0<br />
1:<br />
0<br />
1 0 1<br />
0<br />
2:<br />
1<br />
0 0 0<br />
1<br />
3:<br />
1<br />
1 0 1<br />
0<br />
Mikroinstruktions−<br />
register
Die Ampel als mikroprogrammierbare Maschine<br />
Zähler<br />
0:<br />
Mikroprogrammspeicher<br />
rot<br />
0<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
grün<br />
0 1 1 0<br />
1:<br />
0<br />
1 0 1<br />
0<br />
2:<br />
1<br />
0 0 0<br />
1<br />
3:<br />
1<br />
1 0 1<br />
0<br />
Takt<br />
Mikroinstruktions−<br />
register
Die Ampel als mikroprogrammierbare Maschine<br />
Zähler<br />
0:<br />
Mikroprogrammspeicher<br />
rot<br />
0<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
grün<br />
0 1 1 0<br />
ccen jump bar<br />
1 1 0<br />
1:<br />
0<br />
1 0 1<br />
0<br />
0 0 X<br />
2:<br />
1<br />
0 0 0<br />
1<br />
0 0 X<br />
3:<br />
1<br />
1 0 1<br />
0<br />
0 1 0<br />
Takt<br />
Mikroinstruktions−<br />
register
Die Ampel als mikroprogrammierbare Maschine<br />
Zähler<br />
load<br />
0:<br />
1:<br />
Mikroprogrammspeicher<br />
rot<br />
0<br />
0<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
1 0 1<br />
grün<br />
0 1 1 0<br />
0<br />
ccen jump bar<br />
1 1 0<br />
0 0 X<br />
2:<br />
1<br />
0 0 0<br />
1<br />
0 0 X<br />
3:<br />
1<br />
1 0 1<br />
0<br />
0 1 0<br />
Takt<br />
Mikroinstruktions−<br />
register
Die Ampel als mikroprogrammierbare Maschine<br />
Zähler<br />
load<br />
Bed.<br />
logik<br />
0:<br />
1:<br />
2:<br />
Mikroprogrammspeicher<br />
rot<br />
0<br />
0<br />
1<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
1 0 1<br />
0 0 0<br />
grün<br />
0 1 1 0<br />
0<br />
1<br />
ccen jump bar<br />
1 1 0<br />
0 0 X<br />
0 0 X<br />
Knopf<br />
3:<br />
1<br />
1 0 1<br />
0<br />
0 1 0<br />
Takt<br />
Mikroinstruktions−<br />
register
Die mikroprogrammierte Ampel in Aktion<br />
Mikroprogrammspeicher<br />
Zähler<br />
load<br />
0<br />
0:<br />
rot<br />
0<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
grün<br />
0 1 1 0<br />
ccen jump bar<br />
1 1 0<br />
Bed.<br />
logik<br />
1:<br />
2:<br />
0<br />
1<br />
1 0 1<br />
0 0 0<br />
0<br />
1<br />
0 0 X<br />
0 0 X<br />
Knopf<br />
0<br />
3:<br />
1<br />
1 0 1<br />
0<br />
0 1 0<br />
Takt<br />
1<br />
load<br />
Mikroinstruktions− register<br />
0 0 1 1 0 1 1<br />
0
Die mikroprogrammierte Ampel in Aktion<br />
Mikroprogrammspeicher<br />
Zähler<br />
load<br />
0<br />
0:<br />
rot<br />
0<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
grün<br />
0 1 1 0<br />
ccen jump bar<br />
1 1 0<br />
Bed.<br />
logik<br />
1:<br />
2:<br />
0<br />
1<br />
1 0 1<br />
0 0 0<br />
0<br />
1<br />
0 0 X<br />
0 0 X<br />
Knopf<br />
0<br />
3:<br />
1<br />
1 0 1<br />
0<br />
0 1 0<br />
Takt<br />
0<br />
Mikroinstruktions− register<br />
0 0 1 1 0 1 1 0
Die mikroprogrammierte Ampel in Aktion<br />
Mikroprogrammspeicher<br />
Zähler<br />
load<br />
0<br />
0:<br />
rot<br />
0<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
grün<br />
0 1 1 0<br />
ccen jump bar<br />
1 1 0<br />
Bed.<br />
logik<br />
1:<br />
2:<br />
0<br />
1<br />
1 0 1<br />
0 0 0<br />
0<br />
1<br />
0 0 X<br />
0 0 X<br />
Knopf<br />
1<br />
3:<br />
1<br />
1 0 1<br />
0<br />
0 1 0<br />
Takt<br />
1<br />
load<br />
Mikroinstruktions− register<br />
0 0 1 1 0 1 1 0
Die mikroprogrammierte Ampel in Aktion<br />
+1<br />
Zähler<br />
load<br />
1<br />
0:<br />
Mikroprogrammspeicher<br />
rot<br />
0<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
grün<br />
0 1 1 0<br />
ccen jump bar<br />
1 1 0<br />
Bed.<br />
logik<br />
1:<br />
2:<br />
0<br />
1<br />
1 0 1<br />
0 0 0<br />
0<br />
1<br />
0 0 X<br />
0 0 X<br />
Knopf<br />
1<br />
3:<br />
1<br />
1 0 1<br />
0<br />
0 1 0<br />
Takt<br />
0<br />
Mikroinstruktions− register<br />
0 0 1 1 0 1 1 0
Die mikroprogrammierte Ampel in Aktion<br />
Mikroprogrammspeicher<br />
Zähler<br />
load<br />
1<br />
0:<br />
rot<br />
0<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
grün<br />
0 1 1 0<br />
ccen jump bar<br />
1 1 0<br />
Bed.<br />
logik<br />
1:<br />
2:<br />
0<br />
1<br />
1 0 1<br />
0 0 0<br />
0<br />
1<br />
0 0 X<br />
0 0 X<br />
Knopf<br />
1<br />
3:<br />
1<br />
1 0 1<br />
0<br />
0 1 0<br />
Takt<br />
1<br />
load<br />
Mikroinstruktions− register<br />
0 1 0 1 0 0 0<br />
X
Die mikroprogrammierte Ampel in Aktion<br />
+1<br />
Zähler<br />
load<br />
2<br />
0:<br />
Mikroprogrammspeicher<br />
rot<br />
0<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
grün<br />
0 1 1 0<br />
ccen jump bar<br />
1 1 0<br />
Bed.<br />
logik<br />
1:<br />
2:<br />
0<br />
1<br />
1 0 1<br />
0 0 0<br />
0<br />
1<br />
0 0 X<br />
0 0 X<br />
Knopf<br />
1<br />
3:<br />
1<br />
1 0 1<br />
0<br />
0 1 0<br />
Takt<br />
0<br />
Mikroinstruktions− register<br />
0 1 0 1 0 0 0<br />
X
Die mikroprogrammierte Ampel in Aktion<br />
Mikroprogrammspeicher<br />
Zähler<br />
load<br />
2<br />
0:<br />
rot<br />
0<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
grün<br />
0 1 1 0<br />
ccen jump bar<br />
1 1 0<br />
Bed.<br />
logik<br />
1:<br />
2:<br />
0<br />
1<br />
1 0 1<br />
0 0 0<br />
0<br />
1<br />
0 0 X<br />
0 0 X<br />
Knopf<br />
1<br />
3:<br />
1<br />
1 0 1<br />
0<br />
0 1 0<br />
Takt<br />
1<br />
load<br />
Mikroinstruktions− register<br />
1 0 0 0 1 0 0<br />
X
Die mikroprogrammierte Ampel in Aktion<br />
+1<br />
Zähler<br />
load<br />
3<br />
0:<br />
Mikroprogrammspeicher<br />
rot<br />
0<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
grün<br />
0 1 1 0<br />
ccen jump bar<br />
1 1 0<br />
Bed.<br />
logik<br />
1:<br />
2:<br />
0<br />
1<br />
1 0 1<br />
0 0 0<br />
0<br />
1<br />
0 0 X<br />
0 0 X<br />
Knopf<br />
1<br />
3:<br />
1<br />
1 0 1<br />
0<br />
0 1 0<br />
Takt<br />
0<br />
Mikroinstruktions− register<br />
1 0 0 0 1 0 0<br />
X
Die mikroprogrammierte Ampel in Aktion<br />
Mikroprogrammspeicher<br />
Zähler<br />
load<br />
3<br />
0:<br />
rot<br />
0<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
grün<br />
0 1 1 0<br />
ccen jump bar<br />
1 1 0<br />
Bed.<br />
logik<br />
1:<br />
2:<br />
0<br />
1<br />
1 0 1<br />
0 0 0<br />
0<br />
1<br />
0 0 X<br />
0 0 X<br />
Knopf<br />
0<br />
3:<br />
1<br />
1 0 1<br />
0<br />
0 1 0<br />
Takt<br />
1<br />
load<br />
Mikroinstruktions− register<br />
1 1 0 1 0 0 1 0
Die mikroprogrammierte Ampel in Aktion<br />
Mikroprogrammspeicher<br />
Zähler<br />
load<br />
0<br />
0:<br />
rot<br />
0<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
grün<br />
0 1 1 0<br />
ccen jump bar<br />
1 1 0<br />
Bed.<br />
logik<br />
1:<br />
2:<br />
0<br />
1<br />
1 0 1<br />
0 0 0<br />
0<br />
1<br />
0 0 X<br />
0 0 X<br />
Knopf<br />
0<br />
3:<br />
1<br />
1 0 1<br />
0<br />
0 1 0<br />
Takt<br />
0<br />
Mikroinstruktions− register<br />
1 1 0 1 0 0 1 0
Die mikroprogrammierte Ampel in Aktion<br />
Mikroprogrammspeicher<br />
Zähler<br />
load<br />
0<br />
0:<br />
rot<br />
0<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
grün<br />
0 1 1 0<br />
ccen jump bar<br />
1 1 0<br />
Bed.<br />
logik<br />
1:<br />
2:<br />
0<br />
1<br />
1 0 1<br />
0 0 0<br />
0<br />
1<br />
0 0 X<br />
0 0 X<br />
Knopf<br />
0<br />
3:<br />
1<br />
1 0 1<br />
0<br />
0 1 0<br />
Takt<br />
1 load<br />
Mikroinstruktions− register<br />
0 0 1 1 0 1 1<br />
0
Adressen<br />
Speicher<br />
Daten<br />
Status<br />
Operation<br />
Leitwerk<br />
Rechenwerk<br />
Status<br />
Operation<br />
E/A−Werk<br />
Status<br />
Operation
Adressen<br />
Speicher<br />
Daten<br />
Status<br />
Operation<br />
Leitwerk<br />
Rechenwerk<br />
Status<br />
Operation<br />
MUX<br />
µBZ<br />
INC<br />
Mikroprogrammspeicher<br />
Status<br />
E/A−Werk<br />
Operation<br />
Mikroinstruktionsregister<br />
Takt
Adressen<br />
Speicher<br />
Daten<br />
Status<br />
Operation<br />
Leitwerk<br />
IR<br />
OpCode<br />
A<br />
B<br />
BZ<br />
Rechenwerk<br />
Status<br />
Operation<br />
MUX<br />
µBZ<br />
INC<br />
Mikroprogrammspeicher<br />
Status<br />
E/A−Werk<br />
Operation<br />
Mikroinstruktionsregister<br />
Takt
Adressen<br />
Speicher<br />
Daten<br />
Status<br />
Operation<br />
Leitwerk<br />
IR<br />
OpCode<br />
A<br />
B<br />
BZ<br />
Rechenwerk<br />
Status<br />
Operation<br />
MUX<br />
µBZ<br />
INC<br />
Mikroprogrammspeicher<br />
Status<br />
E/A−Werk<br />
Operation<br />
Mikroinstruktionsregister<br />
Takt
Adressen<br />
Speicher<br />
Daten<br />
Status<br />
Operation<br />
Leitwerk<br />
IR<br />
OpCode<br />
A<br />
B<br />
BZ<br />
Rechenwerk<br />
Status<br />
Operation<br />
MUX<br />
µBZ<br />
INC<br />
Mikroprogrammspeicher<br />
Status<br />
E/A−Werk<br />
Operation<br />
Mikroinstruktionsregister<br />
Takt
Adressen<br />
Speicher<br />
Daten<br />
Status<br />
Operation<br />
Leitwerk<br />
IR<br />
OpCode<br />
A<br />
B<br />
BZ<br />
Map.PROM<br />
Rechenwerk<br />
Status<br />
Operation<br />
MUX<br />
µBZ<br />
INC<br />
Mikroprogrammspeicher<br />
Status<br />
E/A−Werk<br />
Operation<br />
Mikroinstruktionsregister<br />
Takt
Mikroprogrammierung: Begriffe<br />
➥ Mikroinstruktion: in einer Zelle des Mikroprogrammspeichers<br />
enthaltene Steuerbits<br />
➥ Zerfällt in:<br />
➥ Steuerteil: Ausgabe an andere Werke (λ(z))<br />
➥ Adreßteil: bestimmt Nachfolgeinstruktion (δ(z, e))<br />
➥ Einzelne Steuersignale logisch zu Mikrooperation<br />
zusammengefaßt.<br />
Alle Mikrooperationen einer Mikroinstruktion werden<br />
gleichzeitig in einem Takt ausgeführt.<br />
➥ Mikroprogramm: Folge von Mikroinstruktionen
Mikroprogrammierung: Begriffe ...<br />
Mikro−<br />
operation<br />
(Ansichtssache!)<br />
rot<br />
Autos<br />
gelb grün<br />
Fußweg<br />
rot<br />
grün ccen jump<br />
bar<br />
0:<br />
0<br />
0 1 1 0<br />
1<br />
1<br />
0<br />
Mikro−<br />
instruktion<br />
Mikro−<br />
programm<br />
1:<br />
2:<br />
0<br />
1<br />
1 0<br />
0 0<br />
1<br />
0<br />
0<br />
1<br />
0<br />
0<br />
0<br />
0<br />
X<br />
X<br />
3:<br />
1<br />
1<br />
0 1 0 0 1<br />
0<br />
Steuerteil<br />
Adreßteil
Mikroprogrammierung: Begriffe ...<br />
➥ Mikroinstruktionsformate:<br />
➥ horizontal: Steuersignale uncodiert<br />
Beispiel Ampel:<br />
➥ 1 Bit pro Lampe, d.h. 5 Steuerbits<br />
➥ vertikal: weitestgehend codiert<br />
Beispiel Ampel:<br />
➥ 2 Bits für die 4 möglichen<br />
Konfigurationen<br />
➥ quasi-horizontal: teilweise codiert<br />
Beispiel Ampel:<br />
➥ 2 Bits für die Auto-Ampel<br />
➥ 1 Bit für die Fußgängerampel<br />
1 1 0 1 0<br />
1 1<br />
1<br />
Dek.<br />
1 1<br />
Dek. Dek.
Geschaltete Datenpfade
Geschaltete Datenpfade<br />
Tri-State Bus:<br />
➥ Alle Einheiten sind parallel geschaltet<br />
➥ Nur jeweils eine Einheit darf schreiben (OE = 0)<br />
➥ Mehrere Einheiten können die Daten übernehmen (LD = 0,<br />
oft auch CE statt LD)<br />
➥ Analogie: Gruppendiskussion<br />
Einheit 1 Einheit 2 Einheit 3 Einheit 4<br />
OE1 = 0<br />
LD2 = 0 OE3 = 1 LD4 = 1
Geschaltete Datenpfade<br />
Multiplexer:<br />
➥ Jede Einheit separat angeschlossen<br />
➥ Auswahl über Steuersignal(e)<br />
➥ Meist n : 1 (d.h. n Eingänge, 1 Ausgang) oder 1 : m,<br />
es gibt aber auch n : m<br />
➥ Analogie: Cheftelefon mit mehreren Leitungen<br />
Einheit 1<br />
Einheit 3<br />
S = 0<br />
0 1<br />
MUX<br />
LD2 = 0<br />
Einheit 2
Datenbus<br />
Adreßbus<br />
Befehls−<br />
zähler<br />
Inkre−<br />
menter<br />
Instruktionsregister<br />
15 8 7 4 3<br />
OP−Kode Registeradressen<br />
0 A 0 B<br />
0<br />
K−MUX<br />
Y−MUX<br />
Adresse<br />
Mapping−<br />
PROM<br />
A−MUX<br />
B−MUX<br />
Adresse Daten<br />
Hauptspeicher<br />
Steuerung<br />
MWE<br />
D<br />
MAP<br />
Am2910<br />
CC<br />
CCEN<br />
I 0..3<br />
Y<br />
Ausgang OE I 0..8<br />
CE M<br />
CEµ<br />
CT<br />
Am2904<br />
SIOi<br />
QIOi<br />
I N,<br />
I OVR<br />
I C,<br />
I Z<br />
I 0..12 C 0<br />
RAM i<br />
Qi<br />
Am2901<br />
F3, OVR<br />
C n+4 ,F=0<br />
C n Y<br />
D<br />
A<br />
B<br />
MPS<br />
0 1 2 5 6 17 18 21 22 23 28 29 30 31 34 35 36 37 38 39 40 43 44 45 48 49 57 58 73 74 75 79<br />
HS IR Befehls− Branch− Am2910 Status/ MSR Am2904 Am2904 Y− RB RA Am2901<br />
Inter−<br />
MWE LD zähler Address<br />
Konstante<br />
Befehle Test µ SR Shift CIN MUX ADDR ADDR Befehle<br />
rupt<br />
(BAR)<br />
Mikroinstruktionsregister<br />
CCEN<br />
BSEL<br />
ASEL<br />
KMUX
Datenbus<br />
Adreßbus<br />
Befehls−<br />
zähler<br />
Inkre−<br />
menter<br />
Instruktionsregister<br />
15 8 7 4 3<br />
OP−Kode Registeradressen<br />
0 A 0 B<br />
0<br />
K−MUX<br />
Y−MUX<br />
Adresse<br />
Mapping−<br />
PROM<br />
A−MUX<br />
B−MUX<br />
Adresse Daten<br />
Hauptspeicher<br />
Steuerung<br />
MWE<br />
D<br />
MAP<br />
Am2910<br />
CC<br />
CCEN<br />
I 0..3<br />
Y<br />
Ausgang OE I 0..8<br />
CE M<br />
CEµ<br />
CT<br />
Am2904<br />
SIOi<br />
QIOi<br />
I N,<br />
I OVR<br />
I C,<br />
I Z<br />
I 0..12 C 0<br />
RAM i<br />
Qi<br />
Am2901<br />
F3, OVR<br />
C n+4 ,F=0<br />
C n Y<br />
D<br />
A<br />
B<br />
MPS<br />
0 1 2 5 6 17 18 21 22 23 28 29 30 31 34 35 36 37 38 39 40 43 44 45 48 49 57 58 73 74 75 79<br />
HS IR Befehls− Branch− Am2910 Status/ MSR Am2904 Am2904 Y− RB RA Am2901<br />
Inter−<br />
MWE LD zähler Address<br />
Konstante<br />
Befehle Test µ SR Shift CIN MUX ADDR ADDR Befehle<br />
rupt<br />
(BAR)<br />
Mikroinstruktionsregister<br />
CCEN<br />
BSEL<br />
ASEL<br />
KMUX
Datenbus<br />
Adreßbus<br />
Befehls−<br />
zähler<br />
Inkre−<br />
menter<br />
Instruktionsregister<br />
15 8 7 4 3<br />
OP−Kode Registeradressen<br />
0 A 0 B<br />
0<br />
K−MUX<br />
Y−MUX<br />
Adresse<br />
Mapping−<br />
PROM<br />
A−MUX<br />
B−MUX<br />
Adresse Daten<br />
Hauptspeicher<br />
Steuerung<br />
MWE<br />
D<br />
MAP<br />
Am2910<br />
CC<br />
CCEN<br />
I 0..3<br />
Y<br />
Ausgang OE I 0..8<br />
CE M<br />
CEµ<br />
CT<br />
Am2904<br />
SIOi<br />
QIOi<br />
I N,<br />
I OVR<br />
I C,<br />
I Z<br />
I 0..12 C 0<br />
RAM i<br />
Qi<br />
Am2901<br />
F3, OVR<br />
C n+4 ,F=0<br />
C n Y<br />
D<br />
A<br />
B<br />
MPS<br />
0 1 2 5 6 17 18 21 22 23 28 29 30 31 34 35 36 37 38 39 40 43 44 45 48 49 57 58 73 74 75 79<br />
HS IR Befehls− Branch− Am2910 Status/ MSR Am2904 Am2904 Y− RB RA Am2901<br />
Inter−<br />
MWE LD zähler Address<br />
Konstante<br />
Befehle Test µ SR Shift CIN MUX ADDR ADDR Befehle<br />
rupt<br />
(BAR)<br />
Mikroinstruktionsregister<br />
CCEN<br />
BSEL<br />
ASEL<br />
KMUX
Datenbus<br />
Adreßbus<br />
Befehls−<br />
zähler<br />
Inkre−<br />
menter<br />
Instruktionsregister<br />
15 8 7 4 3<br />
OP−Kode Registeradressen<br />
0 A 0 B<br />
0<br />
K−MUX<br />
Y−MUX<br />
Adresse<br />
Mapping−<br />
PROM<br />
A−MUX<br />
B−MUX<br />
Adresse Daten<br />
Hauptspeicher<br />
Steuerung<br />
MWE<br />
D<br />
MAP<br />
Am2910<br />
CC<br />
CCEN<br />
I 0..3<br />
Y<br />
Ausgang OE I 0..8<br />
CE M<br />
CEµ<br />
CT<br />
Am2904<br />
SIOi<br />
QIOi<br />
I N,<br />
I OVR<br />
I C,<br />
I Z<br />
I 0..12 C 0<br />
RAM i<br />
Qi<br />
Am2901<br />
F3, OVR<br />
C n+4 ,F=0<br />
C n Y<br />
D<br />
A<br />
B<br />
MPS<br />
0 1 2 5 6 17 18 21 22 23 28 29 30 31 34 35 36 37 38 39 40 43 44 45 48 49 57 58 73 74 75 79<br />
HS IR Befehls− Branch− Am2910 Status/ MSR Am2904 Am2904 Y− RB RA Am2901<br />
Inter−<br />
MWE LD zähler Address<br />
Konstante<br />
Befehle Test µ SR Shift CIN MUX ADDR ADDR Befehle<br />
rupt<br />
(BAR)<br />
Mikroinstruktionsregister<br />
CCEN<br />
BSEL<br />
ASEL<br />
KMUX
Datenbus<br />
Adreßbus<br />
Befehls−<br />
zähler<br />
Inkre−<br />
menter<br />
Instruktionsregister<br />
15 8 7 4 3<br />
OP−Kode Registeradressen<br />
0 A 0 B<br />
0<br />
K−MUX<br />
Y−MUX<br />
Adresse<br />
Mapping−<br />
PROM<br />
A−MUX<br />
B−MUX<br />
Adresse Daten<br />
Hauptspeicher<br />
Steuerung<br />
MWE<br />
D<br />
MAP<br />
Am2910<br />
CC<br />
CCEN<br />
I 0..3<br />
Y<br />
Ausgang OE I 0..8<br />
CE M<br />
CEµ<br />
CT<br />
Am2904<br />
SIOi<br />
QIOi<br />
I N,<br />
I OVR<br />
I C,<br />
I Z<br />
I 0..12 C 0<br />
RAM i<br />
Qi<br />
Am2901<br />
F3, OVR<br />
C n+4 ,F=0<br />
C n Y<br />
D<br />
A<br />
B<br />
MPS<br />
0 1 2 5 6 17 18 21 22 23 28 29 30 31 34 35 36 37 38 39 40 43 44 45 48 49 57 58 73 74 75 79<br />
HS IR Befehls− Branch− Am2910 Status/ MSR Am2904 Am2904 Y− RB RA Am2901<br />
Inter−<br />
MWE LD zähler Address<br />
Konstante<br />
Befehle Test µ SR Shift CIN MUX ADDR ADDR Befehle<br />
rupt<br />
(BAR)<br />
Mikroinstruktionsregister<br />
CCEN<br />
BSEL<br />
ASEL<br />
KMUX
Datenbus<br />
Adreßbus<br />
Befehls−<br />
zähler<br />
Inkre−<br />
menter<br />
Instruktionsregister<br />
15 8 7 4 3<br />
OP−Kode Registeradressen<br />
0 A 0 B<br />
0<br />
K−MUX<br />
Y−MUX<br />
Adresse<br />
Mapping−<br />
PROM<br />
A−MUX<br />
B−MUX<br />
Adresse Daten<br />
Hauptspeicher<br />
Steuerung<br />
MWE<br />
D<br />
MAP<br />
Am2910<br />
CC<br />
CCEN<br />
I 0..3<br />
Y<br />
Ausgang OE I 0..8<br />
CE M<br />
CEµ<br />
CT<br />
Am2904<br />
SIOi<br />
QIOi<br />
I N,<br />
I OVR<br />
I C,<br />
I Z<br />
I 0..12 C 0<br />
RAM i<br />
Qi<br />
Am2901<br />
F3, OVR<br />
C n+4 ,F=0<br />
C n Y<br />
D<br />
A<br />
B<br />
MPS<br />
0 1 2 5 6 17 18 21 22 23 28 29 30 31 34 35 36 37 38 39 40 43 44 45 48 49 57 58 73 74 75 79<br />
HS IR Befehls− Branch− Am2910 Status/ MSR Am2904 Am2904 Y− RB RA Am2901<br />
Inter−<br />
MWE LD zähler Address<br />
Konstante<br />
Befehle Test µ SR Shift CIN MUX ADDR ADDR Befehle<br />
rupt<br />
(BAR)<br />
Mikroinstruktionsregister<br />
CCEN<br />
BSEL<br />
ASEL<br />
KMUX
Datenbus<br />
Adreßbus<br />
Befehls−<br />
zähler<br />
Inkre−<br />
menter<br />
Instruktionsregister<br />
15 8 7 4 3<br />
OP−Kode Registeradressen<br />
0 A 0 B<br />
0<br />
K−MUX<br />
Y−MUX<br />
Adresse<br />
Mapping−<br />
PROM<br />
A−MUX<br />
B−MUX<br />
Adresse Daten<br />
Hauptspeicher<br />
Steuerung<br />
MWE<br />
D<br />
MAP<br />
Am2910<br />
CC<br />
CCEN<br />
I 0..3<br />
Y<br />
Ausgang OE I 0..8<br />
CE M<br />
CEµ<br />
CT<br />
Am2904<br />
SIOi<br />
QIOi<br />
I N,<br />
I OVR<br />
I C,<br />
I Z<br />
I 0..12 C 0<br />
RAM i<br />
Qi<br />
Am2901<br />
F3, OVR<br />
C n+4 ,F=0<br />
C n Y<br />
D<br />
A<br />
B<br />
MPS<br />
0 1 2 5 6 17 18 21 22 23 28 29 30 31 34 35 36 37 38 39 40 43 44 45 48 49 57 58 73 74 75 79<br />
HS IR Befehls− Branch− Am2910 Status/ MSR Am2904 Am2904 Y− RB RA Am2901<br />
Inter−<br />
MWE LD zähler Address<br />
Konstante<br />
Befehle Test µ SR Shift CIN MUX ADDR ADDR Befehle<br />
rupt<br />
(BAR)<br />
Mikroinstruktionsregister<br />
CCEN<br />
BSEL<br />
ASEL<br />
KMUX
Datenbus<br />
Adreßbus<br />
Befehls−<br />
zähler<br />
Inkre−<br />
menter<br />
Instruktionsregister<br />
15 8 7 4 3<br />
OP−Kode Registeradressen<br />
0 A 0 B<br />
0<br />
K−MUX<br />
Y−MUX<br />
Adresse<br />
Mapping−<br />
PROM<br />
A−MUX<br />
B−MUX<br />
Adresse Daten<br />
Hauptspeicher<br />
Steuerung<br />
MWE<br />
D<br />
MAP<br />
Am2910<br />
CC<br />
CCEN<br />
I 0..3<br />
Y<br />
Ausgang OE I 0..8<br />
CE M<br />
CEµ<br />
CT<br />
Am2904<br />
SIOi<br />
QIOi<br />
I N,<br />
I OVR<br />
I C,<br />
I Z<br />
I 0..12 C 0<br />
RAM i<br />
Qi<br />
Am2901<br />
F3, OVR<br />
C n+4 ,F=0<br />
C n Y<br />
D<br />
A<br />
B<br />
MPS<br />
0 1 2 5 6 17 18 21 22 23 28 29 30 31 34 35 36 37 38 39 40 43 44 45 48 49 57 58 73 74 75 79<br />
HS IR Befehls− Branch− Am2910 Status/ MSR Am2904 Am2904 Y− RB RA Am2901<br />
Inter−<br />
MWE LD zähler Address<br />
Konstante<br />
Befehle Test µ SR Shift CIN MUX ADDR ADDR Befehle<br />
rupt<br />
(BAR)<br />
Mikroinstruktionsregister<br />
CCEN<br />
BSEL<br />
ASEL<br />
KMUX
Datenbus<br />
Adreßbus<br />
Befehls−<br />
zähler<br />
Inkre−<br />
menter<br />
Instruktionsregister<br />
15 8 7 4 3<br />
OP−Kode Registeradressen<br />
0 A 0 B<br />
0<br />
K−MUX<br />
Y−MUX<br />
Adresse<br />
Mapping−<br />
PROM<br />
A−MUX<br />
B−MUX<br />
Adresse Daten<br />
Hauptspeicher<br />
Steuerung<br />
MWE<br />
D<br />
MAP<br />
Am2910<br />
CC<br />
CCEN<br />
I 0..3<br />
Y<br />
Ausgang OE I 0..8<br />
CE M<br />
CEµ<br />
CT<br />
Am2904<br />
SIOi<br />
QIOi<br />
I N,<br />
I OVR<br />
I C,<br />
I Z<br />
I 0..12 C 0<br />
RAM i<br />
Qi<br />
Am2901<br />
F3, OVR<br />
C n+4 ,F=0<br />
C n Y<br />
D<br />
A<br />
B<br />
MPS<br />
0 1 2 5 6 17 18 21 22 23 28 29 30 31 34 35 36 37 38 39 40 43 44 45 48 49 57 58 73 74 75 79<br />
HS IR Befehls− Branch− Am2910 Status/ MSR Am2904 Am2904 Y− RB RA Am2901<br />
Inter−<br />
MWE LD zähler Address<br />
Konstante<br />
Befehle Test µ SR Shift CIN MUX ADDR ADDR Befehle<br />
rupt<br />
(BAR)<br />
Mikroinstruktionsregister<br />
CCEN<br />
BSEL<br />
ASEL<br />
KMUX
Der Hauptspeicher<br />
Datenbus<br />
Adreßbus<br />
Befehls−<br />
zähler<br />
Inkre−<br />
menter<br />
Instruktionsregister<br />
15 8 7 4 3<br />
OP−Kode Registeradressen<br />
0 A 0 B<br />
0<br />
K−MUX<br />
Y−MUX<br />
Adresse<br />
Mapping−<br />
PROM<br />
A−MUX<br />
B−MUX<br />
Adresse Daten<br />
Hauptspeicher<br />
Steuerung<br />
MWE<br />
D<br />
MAP<br />
Am2910<br />
CC<br />
CCEN<br />
I 0..3<br />
Y<br />
Ausgang OE I 0..8<br />
CE M<br />
CEµ<br />
CT<br />
Am2904<br />
SIOi<br />
QIOi<br />
I N,<br />
I OVR<br />
I C,<br />
I Z<br />
I 0..12 C 0<br />
RAM i<br />
Qi<br />
Am2901<br />
F3, OVR<br />
C n+4 ,F=0<br />
C n Y<br />
D<br />
A<br />
B<br />
MPS<br />
0 1 2 5 6 17 18 21 22 23 28 29 30 31 34 35 36 37 38 39 40 43 44 45 48 49 57 58 73 74 75 79<br />
HS IR Befehls− Branch− Am2910 Status/ MSR Am2904 Am2904 Y− RB RA Am2901<br />
Inter−<br />
MWE LD zähler Address<br />
Konstante<br />
Befehle Test µ SR Shift CIN MUX ADDR ADDR Befehle<br />
rupt<br />
(BAR)<br />
Mikroinstruktionsregister<br />
CCEN<br />
BSEL<br />
ASEL<br />
KMUX
Der Hauptspeicher<br />
Adresse<br />
Hauptspeicher<br />
(CS)<br />
Daten<br />
MWE<br />
CS zeigt Beginn eines Zugriffs an.<br />
Wird im <strong>MI</strong>−Rechner automatisch<br />
erzeugt.<br />
Zugriffsprotokoll:<br />
Lesen:<br />
1. Adresse an Adreßeingang,<br />
MW E = R<br />
2. Daten lesen<br />
Schreiben:<br />
1. Adresse an Adreßeingang,<br />
MW E = W<br />
2. Daten an Dateneingang,<br />
MW E = R
Aufgabe 6.2<br />
Mikroprogramm IFETCH:<br />
0 (a) Ausgabe BZ an Adreßbus<br />
(b) Lesezyklus starten<br />
1 Daten vom Datenbus ins Instruktionsregister<br />
2 (a) BZ erhöhen<br />
(b) Op-Code adressiert Mapping-PROM<br />
Speicherzelle enthält Adresse eines Mikroprogramms<br />
Mikroprogramm anspringen
79787776757473727170696867666564636261605958575655545352515049484746454443424140393837363534333231302928272625242322212019181716151413121110 9<br />
8<br />
7 6 5 4 3 2 1 0<br />
IE<br />
I3<br />
I2<br />
I1<br />
I0<br />
KMUX<br />
K15<br />
K14<br />
K13<br />
K12<br />
K11<br />
K10<br />
K9<br />
K8<br />
K7<br />
K6<br />
K5<br />
K4<br />
K3<br />
K2<br />
K1<br />
K0<br />
I2<br />
I1<br />
I0<br />
I5<br />
I4<br />
I3<br />
I8<br />
I7<br />
I6<br />
A3<br />
A2<br />
A1<br />
A0<br />
ASEL<br />
B3<br />
B2<br />
B1<br />
B0<br />
BSEL<br />
ABUS*<br />
DBUS*<br />
I12<br />
I11<br />
I9<br />
I8<br />
I7<br />
I6<br />
CEMUE*<br />
CEM*<br />
I5<br />
I4<br />
I3<br />
I2<br />
I1<br />
I0<br />
CCEN*<br />
I3<br />
I2<br />
I1<br />
I0<br />
D11<br />
D10<br />
D9<br />
D8<br />
D7<br />
D6<br />
D5<br />
D4<br />
D3<br />
D2<br />
D1<br />
D0<br />
BZ_LD*<br />
BZ_ED*<br />
BZ_INC*<br />
BZ_EA*<br />
IR_LD*<br />
MWE*<br />
Interrupt Konstante Src Func Dest RA Addr RB Addr<br />
Y−<br />
MUX<br />
CIN<br />
MUX<br />
Schiebe−<br />
steuerung<br />
Statusregister<br />
Test<br />
AM2910−<br />
Befehle<br />
Direktdaten<br />
AM2901<br />
AM2904<br />
AM2910<br />
BZ<br />
IRHS<br />
IFE<br />
TCH<br />
0<br />
X X X X NOP X X X X H H X X H H X X CONT X<br />
R<br />
1<br />
X X X X NOP X X X X H H X X H H X X<br />
CONT<br />
X<br />
R<br />
2<br />
X X X X NOP X X X X H H X X H H X X JMAP<br />
X<br />
R<br />
5<br />
4 3 2 1 0<br />
BZ_LD*<br />
BZ_ED*<br />
BZ_INC*<br />
BZ<br />
BZ_EA*<br />
IR_LD*<br />
MEW*<br />
IRHS<br />
R<br />
R<br />
R