Frage zur Umsetzung von (Rück-) Sprüngen in der Mikroprogrammierung.

Kommt in Aufgabenblatt 04 A3 vor.

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Frage zur Umsetzung von (Rück-) Sprüngen in der Mikroprogrammierung.
Grafik: https://www.dropbox.com/s/dt4ktmd5ez6v28r/Architektur.png?dl=0

Um hier Reg[A] = Reg[A] % Eingabe zu realisieren muss man ja wieder “nach oben” zurückspringen. Mir ist nicht klar wie ich sicherstellen kann wo genau hingesprungen wird, diese Ausführung kam in der VL nicht dran und wurde auch in dem Artikel von Patterson nicht beschrieben.

(1) Eingabe → D
(2) D-> B
(3) A-B → C
(4) Springe wenn C >= 0 [zu (6)oder eben nächsten Überspringen] wie kann ich sicherstellen wogenau hingesprungen wird
(5) C->Ausgabe/ENDE
(6) C->A
(7) Springe [zu (3)] gleiches problem hier

Kann mir jemand den Orangenen Teil (ist das die Sequencing Logic?) erklären? …die einfachere Ausführung aus der VL mit einem Addieren um einfach die nächste Adresse zu überspringen hab ich schon verstanden aber die hier ist nicht so selbsterklärend.

Danke, Pepper


Die Zieladresse liegt in den Eingängen 18…21 an. Ist einer der beiden “Springe”-Eingänge gesetzt (und beim “if C >= 0” zusätzlich, ist C >= 0), dann wird statt den Mikrobefehlszähler um eins zu erhöhen der Zähler auf die anliegende Adresse gesetzt.


Im Sprungbefehl selbst ist die Adresse des Sprungziels einkodiert. Der Multiplexer rechts unten waehlt nun zwischen PC+1 (In0) und dem Adressteil des Befehls (In1). Ob nun tatsaechlich gesprungen wird haengt von folgenden Kriterien ab (Sel):

  • Falls Unbedingter Sprung, springe
  • Falls Bedingter Sprung und C >= 0, springe

Hilft das?


Okay, kann ich also beim beantworten der Aufgabe einfach definieren, dass im Sprungbefehl 20 z.B. das Sprungziel Zeile 6 einkodiert ist? Dann wäre alles klar.


Bleiben die Werte in den Registern erhalten bis sie überschrieben werden oder sind sie nach dem auslesen/auswählen/weiterleiten, wie man es nennen mag, verschwunden?


Kann man in einem Takt das Ergebnis der ALU nach C und nach D schreiben?


Ja

Ja, solange nicht die Leitung „Lade A“ gesetzt wird, bleibt der Wert des Registers erhalten.

In der „Bemerkung“ reicht das. Für das Setzen der Signale müssen die jeweiligen Signalleitungen (binär) richtig gesetzt werden, sodass die Nummer der anzuspringenden Mikroinstruktion des geschriebenen Mikroprogrammes angesprungen wird. Das heißt, bei einem Sprung an Adresse [m]7[/m] müssten die Steuerleitungen [m]19[/m], [m]20[/m], [m]21[/m] gesetzt werden, während [m]18[/m] nicht gesetzt werden dürfte, um die korrekte Adresse darzustellen. (Unter der Annahme, dass Steuerleitung [m]21[/m] dem niederwertigstem Bit entspricht)

1 „Gefällt mir“