Spezifikation/Entwicklerdokumentation

Mikroprogrammierung-Projekt 2.20 - Gruppe 4
add   Addition zweier Operanden
bmove   Kopieren von Speicherblöcken
cmp   Vergleich zweier Operanden
jmpc   Verzweigung, wenn Carry gesetzt
move   Kopieren von Daten
 
Navigation: Projekthauptseite

add   Addition zweier Operanden

Notwendige Schritte im Mikroprogramm:

  1. Berechnung RA+RB über die ALU, beide im Instruktionsregister angegeben
  2. Setzen der Flags OVR, C, Z, N im Maschinenstatusregister
  3. Sprung zu IFE

Realisierung:

Schritte 1/2 müssen gleichzeitig ausgführt werden, da die von der ALU gelieferten Flags nur im Takt der Rechenoperation gültig sind.
Schritt 3 kann gleichzeitig mit 1/2 ausgeführt werden.

Ausführungsschema:

Takt

Schritte

1 1, 2, 3

Der Befehl benötigt also zur Ausführung 1 Takt.

Anfang

bmove   Kopieren von Speicherblöcken

Funktionsschema:

 do
   [r1]=[r0]
   r0=r0+1
   r1=r1+1
   dst=dst-1
 while (dst!=0)

Zunächst wird der Inhalt der über r0 adressierten Speicherstelle eingelesen, dann an die durch r1 adressierte Speicherzelle geschrieben. Dann werden r0 und r1 jeweils inkrementiert. Erst am Schluß wird RB dekrementiert und geprüft, ob es dadurch 0 geworden ist. Wenn ja, ist die Befehlsausführung beendet und es wird zu IFE gesprungen. Wenn nicht, wird das nachste Speicherwort kopiert. Dadurch daß RB erst nach dem Dekrementieren geprüft wird, ergibt sich, daß bmove 65536 Wörter kopiert, wenn RB am Anfang den Wert 0 hat.

Notwendige Schritte im Mikroprogramm:

  1. r0 über die ALU auf den Adreßbus ausgeben
  2. das Datum aus dem Hauptspeicher über den Datenbus in das Q-Register der ALU einlesen
  3. r0 inkrementieren
  4. r1 über die ALU auf den Adreßbus ausgeben und MEW* auf LOW (=Write) setzen
  5. das Q-Register der ALU auf den Datenbus ausgeben und somit in den Hauptspeicher schreiben, MEW* wieder auf HIGH (=Read bzw. nicht schreiben) setzen
  6. r1 inkrementieren
  7. RB (im Instruktionsregister angegeben) dekrementieren und µSR-Zero setzen
  8. wenn das Zero-Flag 0 ist (also RB ungleich 0), dann zu Schritt 1 springen
  9. ansonsten zu IFE springen.

Realisierung:

Schritt 2 muß direkt auf Schritt 1 folgen, da eine Leseoperation immer einen Takt nach der Adreßausgabe erfolgen muß.
Schritte 3 und 4 können gleichzeitig ausgeführt werden, indem man r1 direkt auf den Adreßbus ausgibt die ALU r0 um 1 erhöhen läßt.
Schritt 5 muß direkt auf 3/4 folgen, da eine Schreiboperation immer einen Takt nach der Adreßausgabe erfolgen muß.
Schritte 6 und 7 müssen jeweils nacheinander ausgeführt werden, da die ALU nur eine Rechenoperation pro Takt ausführen kann.
Schritt 8 kann erst nach 7 erfolgen, da die Statusflags erst nach ausgeführter Rechenoperation gültig sind.
Schritt 9 muß nach Schritt 8 ausgeführt werden, da nur eine direkte Sprungadresse pro Mikroinstruktion angegeben werden kann.

Ausführungsschema:

Takt

Schritte

1

1

7 Takte

2

2, 3

3

4

4

5

5

6

6

7

7

8

8

9

1 Takt

Daraus ergibt sich die Ausführungszeit mit (7*n)+1 Taktzyklen für n Kopieroperationen.

Anfang

cmp   Vergleich zweier Operanden

Notwendige Schritte im Mikroprogramm:

  1. Berechnung RB-RA über die ALU, beide im Instruktionsregister angegeben
  2. Setzen der Flags OVR, C, Z, N im Maschinenstatusregister
  3. Sprung zu IFE

Realisierung:

Schritte 1/2 müssen gleichzeitig ausgführt werden, da die von der ALU gelieferten Flags nur im Takt der Rechenoperation gültig sind.
Schritt 3 kann gleichzeitig mit 1/2 ausgeführt werden.

Ausführungsschema:

Takt

Schritte

1 1, 2, 3

Der Befehl benötigt also zur Ausführung 1 Takt.

Anfang

jmpc   Verzweigung, wenn Carry gesetzt

Notwendige Schritte im Mikroprogramm:

  1. Prüfen des Carry-Flags des Maschinenstatusregisters über den Am2904,Ergebnis wird an den CC-Eingang des Sequencers gelegt.
  2. Wenn Carry=0 (fail), dann zu IFE springen und somit den nächsten Befehl nach JMPC ausführen
  3. Wenn Carry=1 (pass), dann RA (im Instruktionsregister angegeben) über die ALU auf dem Datenbus ausgeben.
  4. Den Befehlszähler vom Datenbus einlesen
  5. Sprung zu IFE

Realisierung:

Die Schritte 1/2 müssen gleichzeitig ausgeführt werden, da der CC-Eingang über den der bedingte Sprung gesteuert wird, nur in dem Takt in dem er gesetzt wird, gültig ist.
Die Schritte 3/4 müssen gleichzeitig ausgeführt werden, da der über die ALU an den Datenbus angelegte Wert nur einen Takt lang gültig ist. Außerdem müssen 3/4 nach 1/2 ausgeführt werden, da der Befehlszähler nur geladen werden darf, wenn das Carry-Flag gesetzt ist.
Schritt 5 kann gleichzeitig mit 3/4 ausgeführt werden.

Ausführungsschema:

Takt

Schritte

1 1, 2
2 3, 4, 5

Der Befehl benötigt also zur Ausführung

Anfang

move   Kopieren von Daten

Notwendige Schritte im Mikroprogramm:

  1. Befehlszähler auf den Adreßbus ausgeben, um das Konstantenfeld einzulesen.
  2. Datum aus dem Konstantenfeld über den Datenbus in das durch RB adressierte Register schreiben. RB ist im Instruktionsregister angegeben.
  3. Befehlszähler um eins erhöhen
  4. Sprung zu IFE

Realisierung:

Schritt 2 muß direkt auf Schritt 1 folgen, da eine Leseoperation immer einen Takt nach der Adreßausgabe erfolgen muß. Schritt 3/4 können zusammen mit Schritt 2 ausgeführt werden.

Ausführungsschema:

Takt

Schritte

1 1
2 2, 3, 4

Der Befehl benötigt also zur Ausführung 2 Takte

Anfang


zu den TGI-SeitenZu den TGI-Seiten der TUM

14.7.98