Mehrzyklenimplementierung erweitern

Neue Frage »

Auf diesen Beitrag antworten »
deppensido Mehrzyklenimplementierung erweitern

hallo,

bei folgender Aufgabe soll man die Mehrzyklenimplementierung um den Befehl: ji imm(register) (für jump indirect) erweitern. Irgendwie komme ich überhaupt nicht voran, weil ich nicht richtig verstehe, was genau bei diesem Befehl passiert. Soweit ich das bisher verstanden habe, steht die Sprungadresse im Register register und ein Offset im imm-Feld, was eine immediate Variable sein dürfte. Dementsprechend habe ich als Instruktionsformat I-Type gewählt, wobei das Feld RS (Bits 25-21) ein don't care Feld ist, RT für das register-Feld (Bits 20 -16) und imm im Immediate-Feld (Bits 15-0). Stimmt das soweit schon mal?

Meine Idee um den Datenpfad zu erweitern: Die Bits 20-16, sowie die Bits 15-0 an den Write Data Eingang vom Memory-Register verbinden und den Ausgang MemData mit der Leitung für den PC verbinden.

Ist dies so schon mal richtig gedacht oder habe ich irgendwo einen Denkfehler?
Vielen dank schon mal.
 
Auf diesen Beitrag antworten »
deppensido

ich hab jetzt mal meine Ideen im Datenpfad umgesetzt (siehe Anhang). Die Bits für register und imm habe ich dabei in den Adress Eingang des Memory Registers geleitet und das Ergebnis vom Memory Data Register an den Multiplexer vor dem PC geleitet. Unsicher bin ich mir noch, ob ich vom imm-Teil erst das signExtend durchlaufen muss oder nicht, in meinem Fall hab ich das jetzt gemacht, bin mir aber da unsicher. Schaut das sonst so gut aus?
Auf diesen Beitrag antworten »
deppensido

ich habe nochmal nachgedacht und hab mir überlegt, dass der Wort-Offset von imm in der ALU mit der Sprungadresse verechnet werden muss. Demnach steht register im RS-Feld (Bits 25-21) und das RT-Feld (Bits 20-16) wird don't care. Demnach braucht der Multiplexer IordD nicht erweitert werden, da dieser einfach auf 1 gesetzt werden muss. Im Datenpfad müsste dann nur der Multiplexer PCSource um einen dritten Eingang erweitert werden und dieser mit der Leitung von Memory Data Register verbunden werden (siehe Anhang).

Für den Controller habe ich entsprechend für die Execution-Phase die Signale: ALUSource = 1, ALUSourceB=10 und ALUOp = 00 gesetzt. Für die Memory-Access-Phasse: MemRead = 1, IordD = 1 und PCSource = 11 gesetzt. Demnach hat ji einen CPI von 4.

Ist das jetzt alles korrekt?
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »