02.04.2014 Aufrufe

MI-Folien (1) - LRR - TUM

MI-Folien (1) - LRR - TUM

MI-Folien (1) - LRR - TUM

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!