Zustandsgraph MIPS: State 1 aluout??

tmx-master
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 253
Registriert: 25. Okt 2006 17:44

Zustandsgraph MIPS: State 1 aluout??

Beitrag von tmx-master »

Hi,
ich weiß, der Zustandsgraph von MIPS gibt es schon ein paar Jahre, aber trotzdem ist mir im State 1 eins unklar:

u.a. steht da: aluout<=pc+ (sext(ir[15:0]) <<2)

Ich frage mich, was das in der Bezeichnung hier zu suchen hat, denn die ALU rechnet an der Stelle gar nichts (also schon mal nicht diese Addition).

Was sehr wohl (übrigens bei jedem Befehl, ob das genutzt wird bzw. Sinn macht oder nicht) gemacht wird, ist mit Instruction[15-0] ein Shift left 2 und ein Add (mit dem "Alu-Modul" oben) mit pc+4. Das Ergebnis allerdings in State 1 als aluout zu bezeichnen, halte ich für falsch oder zumindest für sehr mißverständlich, da die ALU nun mal die ALU ist und keine Add-Modul.

Hmm, jetzt frage ich mich, ob ich das richtig sehe oder ob ich was übersehe. Wie ist eure Meinung?
Gruß TM

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Zustandsgraph MIPS: State 1 aluout??

Beitrag von Stumpf.Alex »

tmx-master hat geschrieben:Hi,
ich weiß, der Zustandsgraph von MIPS gibt es schon ein paar Jahre, aber trotzdem ist mir im State 1 eins unklar:

u.a. steht da: aluout<=pc+ (sext(ir[15:0]) <<2)

Ich frage mich, was das in der Bezeichnung hier zu suchen hat, denn die ALU rechnet an der Stelle gar nichts (also schon mal nicht diese Addition).

Was sehr wohl (übrigens bei jedem Befehl, ob das genutzt wird bzw. Sinn macht oder nicht) gemacht wird, ist mit Instruction[15-0] ein Shift left 2 und ein Add (mit dem "Alu-Modul" oben) mit pc+4. Das Ergebnis allerdings in State 1 als aluout zu bezeichnen, halte ich für falsch oder zumindest für sehr mißverständlich, da die ALU nun mal die ALU ist und keine Add-Modul.

Hmm, jetzt frage ich mich, ob ich das richtig sehe oder ob ich was übersehe. Wie ist eure Meinung?
Wieso? Also die Alu berechnet dort definitv die neue relative Sprungadresse und dieses Ergebnis wird in dem Alupufferregister gesichert. Dazu solltest du dir auch ma den Zustandsdiagramm mit den Steuerwerkausgaben anschauen. Da wird im Zustand 1 die Alu mit einer Addition betrieben.

Es wird nämlich einfach vorsorglich die relative Sprungadresse berechnet ohne zu wissen um welchen Befehl es sich handelt. Falls es dann tatsächlich beim dekodieren ein bedingter Sprungbefehl handeln sollte, ist die Alu im nächsten Schritt dann auch mit dem Vergleich der Registerinhalten beschäftigt. Da ist es halt praktisch schonmal die Sprungadresse zu haben, weil wir in der Mehrtaktimplementierung nur noch diese eine Alu haben. Sonst müssten wir einen Takt länger beanspruchen, um dann die Sprungadresse zu berechnen.
Der Shift entspricht einfach eine Mutiplikation mit 4, da wir aligned wortweise (1 Wort = 4 Bytes, daher mal 4) Befehle addressieren.

tmx-master
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 253
Registriert: 25. Okt 2006 17:44

Re: Zustandsgraph MIPS: State 1 aluout??

Beitrag von tmx-master »

Ok, Mehrtakt. Ich schaue immer auf das Bild der Eintaktimplementierung (Übung 10). Hmm. In Übung 10 ist das dann aber etwas inkonsequent. Es wird die erste MIPS-Implementierung genutzt, aber der Zustandsgraph einer erweiterten Implementierung (Mehrtakt; das "Add-Modul" taucht da explizit ja nicht mehr auf) zugrunde gelegt. Das ist natürlich verwirrend (zumindest für mich :-)).
Gruß TM

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Zustandsgraph MIPS: State 1 aluout??

Beitrag von Stumpf.Alex »

Ah alles klar. Aber Zustandsgraphen machen halt bei der Einzeltakt- und Pipelining-Implementierung keinen Sinn. Weil es ja da bei dem Steuerwerk im dem Sinne keine Zustände gibt und alles rein Input -> Output gesteuert ist.

tmx-master
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 253
Registriert: 25. Okt 2006 17:44

Re: Zustandsgraph MIPS: State 1 aluout??

Beitrag von tmx-master »

Ja, du hast natürlich recht. Gerade beim Pipelining ist ja Vorausberechnung überhaupt erst der Schlüssel zum Glück. Für Datenpfade wird natürlich das Bild der Mehrtaktimplementierung wesentlich komplexer (bis fast unmöglich), aber da es eben jetzt wieder nur eine ALU gibt, berechnet die natürlich auch (wenn auch zum großen Teil umsonst) die Sprungadresse für den PC. Oh Mann, die Themen sind schon recht komplex ...

Aber vielen Dank für die Antworten. Die haben super geholfen und der Thread kann aus meiner Sicht auch beendet werden.
Gruß TM

Antworten

Zurück zu „Archiv“