DLX

Benutzeravatar
Robsen
Beiträge: 1013
Registriert: 02.08.2008 14:39
Name: Robert
Geschlecht: männlich
Studienrichtung: Elektrotechnik
Matrikel: 2008
Angestrebter Abschluss: Dipl-Ing.
Wohnort: Großschirma/Dresden
Contact:

DLX

Beitrag von Robsen » 04.02.2009 10:25

Wie funktionieren logische DLX-Befehle? Was passiert mit den Registern?
1) Beispiel Probeklausur:
ORI R7, R0,0x102C

2) anderes Beispiel

AND Rx, Ry,Rz

3) und warum werden auch bei Shift-Befehlen mitunter 3 Register angegeben? reichen nicht 2, ein Source- und ein Store Register?

4) wenn bei Add und Sub Befehlen ein "U" auftaucht (zb. ADDUI oder SUBU) heißt das einfach, das bei ALLEN Operanden das Vorzeichen ignoriert wird?

5) Was bedeutet eine ganze Zahl vor einem Register im Operand? Im Script steht zB:
SH 8(R1), R4
ohne die 8 hätte ich jetzt gesagt, das Halbwort aus R4 soll in R1 gespeichert werden, aber mit der 8?
Was wird bei LB R4, 100(R3) in R4 geladen?

Die Beantwortung dieser vermeintlich einfachen Fragen würde bei mir sehr zum Verständnis beitragen :|
So you run and you run to catch up with the sun,
but it's sinking. Racing around to come up behind you again...

schoene
Beiträge: 251
Registriert: 25.02.2005 11:42

Re: DLX

Beitrag von schoene » 04.02.2009 10:50

Robsen hat geschrieben:Wie funktionieren logische DLX-Befehle? Was passiert mit den Registern?
1) Beispiel Probeklausur:
ORI R7, R0,0x102C

2) anderes Beispiel

AND Rx, Ry,Rz
Der Inhalt der beiden Quellregister oder des Quellregisters und des auf 32 Bit mit 0 erweiterten Immediate (der Konstanten) werden Bit für Bit einzeln entsprechend der Funktion des logischen Gatters mit gleichem Namen verknüpft.
Robsen hat geschrieben:3) und warum werden auch bei Shift-Befehlen mitunter 3 Register angegeben? reichen nicht 2, ein Source- und ein Store Register?
Im 3. Register oder in der Konstanten wird die Anzahl der Verschiebungen angegeben. Es sind Werte von 0 bis 31 möglich. Bei größeren Werten, werden nur die unteren 5 Bit ausgewertet(also 0 bis 31)!
Robsen hat geschrieben:4) wenn bei Add und Sub Befehlen ein "U" auftaucht (zb. ADDUI oder SUBU) heißt das einfach, das bei ALLEN Operanden das Vorzeichen ignoriert wird?
Ja, bei der DLX würde eine Fehlerbehandlung gestartet, wenn beim ADD von 2 positiven Werten im Ergebnis Bit 0 (das höchste Bit) gesetzt wäre. Beim ADDU wird diese Fehlerbehandlung nicht gestartet.

Die Funktion der DLX Befehle wird in dem Script:
http://www.mr.inf.tu-dresden.de/lehre_w ... dlx_v1.pdf
ab Seite 31 kurz erleutert und auf Seite 30 stehen die Assembler pseudo Befehle der DLX.
Robsen hat geschrieben:5) Was bedeutet eine ganze Zahl vor einem Register im Operand? Im Script steht zB:
SH 8(R1), R4
ohne die 8 hätte ich jetzt gesagt, das Halbwort aus R4 soll in R1 gespeichert werden, aber mit der 8?
Was wird bei LB R4, 100(R3) in R4 geladen?
Es handelt sich bei beiden Befehlen um Speicherbefehle. Die Konstante vor dem in Klammen stehenden Registern ist das Dispacement zu der Adresse in dem Register, welches in Klammern angegeben ist. Die tatsächliche Speicheradresse ist dann die Summe vom Displacement und dem Wert im Register. Hat also R1 den Wert 70000, dann wird der Wert in r4 auf die Speicheradresse 70008 geschrieben. Und ist r3=r1, dann wird beim LB der Wert auf der Adresse 70100 in das Register r4 geladen.
Zuletzt geändert von schoene am 05.02.2009 15:56, insgesamt 1-mal geändert.

Benutzeravatar
Robsen
Beiträge: 1013
Registriert: 02.08.2008 14:39
Name: Robert
Geschlecht: männlich
Studienrichtung: Elektrotechnik
Matrikel: 2008
Angestrebter Abschluss: Dipl-Ing.
Wohnort: Großschirma/Dresden
Contact:

Re: DLX

Beitrag von Robsen » 04.02.2009 13:31

Vielen Dank
So you run and you run to catch up with the sun,
but it's sinking. Racing around to come up behind you again...

meddle
Beiträge: 487
Registriert: 18.10.2004 17:46
Contact:

Re: DLX

Beitrag von meddle » 05.02.2009 12:26

@robsen warst du nicht bei der übung? da wurde die hälfte deiner fragen beantwortet. bei wem hast du übung?

Benutzeravatar
Robsen
Beiträge: 1013
Registriert: 02.08.2008 14:39
Name: Robert
Geschlecht: männlich
Studienrichtung: Elektrotechnik
Matrikel: 2008
Angestrebter Abschluss: Dipl-Ing.
Wohnort: Großschirma/Dresden
Contact:

Re: DLX

Beitrag von Robsen » 05.02.2009 13:42

Bei dem der mir auch hier die Frage beantwortet hat. Das kann sein, dass das in der Übung erklärt wurde und es steht sicher auch irgendwo, nur aus dem Skript bin ich nicht schlau geworden und bei Wikipedia/Lehrbuch findet man auch nicht so leicht antworten.
Außerdem raff ich in Info nix beim ersten mal^^
So you run and you run to catch up with the sun,
but it's sinking. Racing around to come up behind you again...

schoene
Beiträge: 251
Registriert: 25.02.2005 11:42

Re: DLX

Beitrag von schoene » 05.02.2009 16:02

Ich hatte in meiner Antwort den 5. Teil der Frage übersehen und nun noch ergänzt!

LSP
Beiträge: 1
Registriert: 17.10.2008 11:21

Re: DLX

Beitrag von LSP » 08.02.2009 14:33

ich hätte eine frage zum Thema set befehle (vergleichen)

in der Probeklausur kam zum beispiel SLE r4,r2,r3
klar ist, dass eine 1 in r4 geschrieben wird, wenn r2=r3 ist. welche reihenfolge haben aber die sourceregister: ist dann r2=<r3 oder andersrum?

meddle
Beiträge: 487
Registriert: 18.10.2004 17:46
Contact:

Re: DLX

Beitrag von meddle » 08.02.2009 15:34

es ist die reihenfolge, wie sie dastehen.

SLE r4,r2,r3 schreibt in r4 eine "1", wenn r2 bezgl. r3 die bedingung erfüllt, also r2 <= r3 ist. sonst wird in r4 eine null geschrieben. also im prinzip kommt das relationszeichen einfach zwischen die beiden source-register. und wenn die gleichung dann wahr ist, dann ins zielregister ne 1

Benutzeravatar
Mic..
Beiträge: 72
Registriert: 18.10.2008 13:03
Geschlecht: männlich
Studienrichtung: Elektrotechnik
Matrikel: 2008
Angestrebter Abschluss: Dipl-Ing.
Wohnort: dorhemm

Re: DLX

Beitrag von Mic.. » 08.02.2009 17:50

Das ist gut, danke! :)

trm
Beiträge: 151
Registriert: 19.10.2008 09:55
Studienrichtung: Elektrotechnik
Matrikel: 2012

Re: DLX

Beitrag von trm » 10.02.2009 10:49

In welchen Sachen unterscheidet sich die DLX von der MIPS?

schoene
Beiträge: 251
Registriert: 25.02.2005 11:42

Re: DLX

Beitrag von schoene » 10.02.2009 11:47

trm hat geschrieben:In welchen Sachen unterscheidet sich die DLX von der MIPS?
Bei den Verzweigebefehlen können 2 Register miteinander auf Gleichheit oder Ungleichheit verglichen werden, also nicht nur mit Null. Es gibt auch kleiner, größer, kleiner gleich und größer gleich aber die nur mit Null. Bei den Unterprogrammaufrufen JAL kann zum Teil auch das Register zum Retten der Rücksprungadresse angegeben werden. Es muss nicht immer R31 sein. Es gibt auch bedingte Unterprogramm Aufrufe. Der LHI Befehl ist bei MIPS der LUI "Load Upper Immediate". Es gibt einen NOR Befehl aber nur mit 3 Registern. Bei den Schiebebefehlen steht am Ende immer ein V für Variabel (SLLV, SRLV und SRAV), wenn der 3. Operand ein Register ist und es wird SLL, SRL und SRA wenn der 3. Operand eine Konstante ist. Diese Befehle stehen auch nicht im I-Format sondern im R-Format und nutzen für die Konstante die 5 ungenutzten Bits des R-Formats oberhalb der 6 Bits für den Befehlscode. Die Nummerierung der Bits ist wie üblich von Rechts nach links. Für spezielle Anwendungen kann es bis zu 4 Koprozessoren geben. Einer davon ist der FLOAT Prozessor und einer die MMU. Für die Komunikation mit diesen Koprozessoren gibt es eine Reihe von Befehlen. Damit ist die FLOAT Arbeit völlig anders als bei der DLX. Für die Integer Operationen kann man aber sagen ist die DLX eine Untermenge von MIPS. Für die MIPS gab es auch den SPIM Simulator, der aber keine Darstellung der Abarbeitung in der Pipeline hatte.

moreck
Beiträge: 3
Registriert: 28.09.2007 15:59

Re: DLX

Beitrag von moreck » 11.02.2009 11:39

hallo, hab ne frage zur übungsaufgabe 7.2. in der lösung steht, das bei dem bnez befehl der (fdemw) ablauf nach dem "e", also ausführen, gestoppt wird. in der folie steht allerdings das der befehl bei verzweigungen nach dem "m" gestoppt wird. so steht das auch in der lösung von der probeklausur. frage: is einfach die lösung für 7.2 falsch, oder muss man da noch was beachten?

schoene
Beiträge: 251
Registriert: 25.02.2005 11:42

Re: DLX

Beitrag von schoene » 11.02.2009 17:23

Das richtet sich immer nach der Aufgabenstellung! In Aufgabe 7.2 steht es wird nach der EX Phase gesprungen, dann muss das auch so dargestellt werden.

Wann die Verzweigebefehle springen hängt von dem Aufwand ab, den man in der Hardware betrieben hat. Beim geringsten Aufwand kann erst in der MEM Phase gesprungen werden. Bei maximalem Aufwand ist dies schon nach der ID Phase möglich.

Für die Lösung einer Aufgabe ist immer entscheidend, was in der Aufgabe steht!

eleto
Beiträge: 378
Registriert: 10.09.2008 19:41
Geschlecht: männlich
Studienrichtung: Informatik
Matrikel: 2008
Angestrebter Abschluss: Dipl-Ing.

Re: DLX

Beitrag von eleto » 13.02.2009 11:52

Hallo, ich hätte auch noch eine Frage zur Pipeline.

In der Probeklausur wird beim 6ten Befehl (SW) das Register 5 indirekt angesprochen (wenn es so richtig ausgedrückt ist).
Beim nächsten Befehl ADDI wird R5 (direkt) verwendet und da entsteht kein Daten-Hazard.

Ist der Grund dessen, das SW ein Speicherbefehl ist und daher in der Writeback-Phase nichts geschieht?

Schon einmal danke.
104% der BILD-Leser wollen dass zu Guttenberg weiter als Arzt praktizieren darf.

schoene
Beiträge: 251
Registriert: 25.02.2005 11:42

Re: DLX

Beitrag von schoene » 13.02.2009 12:17

Bei einem STOR Befehl gibt es kein Zielregister! Das Ziel der Operation ist eine Speicherzelle. Da der Befehl keines der beiden Register verändert, kann es auch keinen Haszard beim Folgebefehl geben.

eleto
Beiträge: 378
Registriert: 10.09.2008 19:41
Geschlecht: männlich
Studienrichtung: Informatik
Matrikel: 2008
Angestrebter Abschluss: Dipl-Ing.

Re: DLX

Beitrag von eleto » 13.02.2009 12:33

Danke!

In der selben Klausur folgt als 8chter Befehl BNEZ, bei welchem in der Mem-Phase gesprungen wird. In den folgenden 3 Zeilen werden die folgenden Befehle bis zum Strich (Höhe Mem) ausgeführt.
Der ADD (9) greift auf R5 zu. Muss die d-Phase nicht warten (ADDI (7), weil das Writeback nicht mehr geschieht (Sprung)?

Wenn kein getrennter Daten- u. Befehls-Speicher vorhanden ist, was muss man alles beachten? (Pro Takt ein lese-schreibe-Zugriff)
- d und w dürfen nicht in einer Spalte stehen?
- fetch muss ein Takt warten, wenn Load/Strore-Befehl im Memory?

MFG
104% der BILD-Leser wollen dass zu Guttenberg weiter als Arzt praktizieren darf.

meddle
Beiträge: 487
Registriert: 18.10.2004 17:46
Contact:

Re: DLX

Beitrag von meddle » 13.02.2009 12:44

d und w sind keine speicherzugriffe, sondern nur registerzugriffe.

wenn nur ein speicherport, dann darf die memory-phase eines load-store-befehls nicht mit der fetch-phase eines beliebigen befehls zusammenfallen. letzterer muss dann einen takt warten

Sebastian Benke
Beiträge: 113
Registriert: 14.10.2008 19:36
Geschlecht: männlich
Matrikel: 2008
Angestrebter Abschluss: Bachelor

Re: DLX

Beitrag von Sebastian Benke » 13.02.2009 14:05

Hi, ich wollte mal Fragen, auch wenn der nette Herr es versucht hat zu erklären in der Konsutation, wie man eine Zahl prüfen könnte ob sie negativ ist und dann z.B. den Betrag bildet.

Ich weiß ja nicht was in der Klausur nun dran kommt, sicher ist wohl das es auch ne Schleife haben wird...
Würd mich gern auf sowas vorbereiten.
Ich würd ja irgendwie gucken ob das höchste Bit ne 1 z.B. Das dürfte ja heißen das die Zahl ne negative ist.
Und dann könnte man diese Zahl wenn sie negativ ist positiv machen indem man 0 - Z (Z diese neg. Zahl)

Wie könnte ich das alles in DLX ausdrücken?
Wenn einer helfen kann super. LG

meddle
Beiträge: 487
Registriert: 18.10.2004 17:46
Contact:

Re: DLX

Beitrag von meddle » 13.02.2009 14:22

man könnte einen set-befehl nutzen und gegen null vergleichen, z.b. sge r2, r3, r0 bzw. sgei r2, r3, 0 und dann mittels branch (beqz oder bnez) eine bedingte verzweigung machen, wenn der wert positiv ist, dann lässt man ihn so, wenn er negativ ist, dann bildet man den positiven wert. (müsste doch mit ner subtraktion von null emulierbar sein, oder? sub r4, r0, r5 -> Null minus negativer wert gibt doch den positiven wert)

reicht das als idee?

eleto
Beiträge: 378
Registriert: 10.09.2008 19:41
Geschlecht: männlich
Studienrichtung: Informatik
Matrikel: 2008
Angestrebter Abschluss: Dipl-Ing.

Re: DLX

Beitrag von eleto » 13.02.2009 15:11

Würde auch sowas in der Art gehen:

slti r2, r1, #0
begz r2, elsif
sub r1, r0, r1
j elsif
elsif
Zuletzt geändert von eleto am 13.02.2009 15:33, insgesamt 1-mal geändert.
104% der BILD-Leser wollen dass zu Guttenberg weiter als Arzt praktizieren darf.

Benutzeravatar
FSW
Beiträge: 297
Registriert: 14.10.2008 09:14
Name: Frank
Geschlecht: männlich
Studienrichtung: Elektrotechnik
Matrikel: 2008
Angestrebter Abschluss: Dipl-Ing.
Contact:

einzellne Bits prüfen:

Beitrag von FSW » 13.02.2009 15:20

Da das jetz schon oft kam; hier mal das Vorgehen zum Prüfen, ob einzellne Bits 1 sind:
Dazu ziehe ich mal die AND verknüpfung ran (geht auch mit OR). Also, es gilt folgendes:
a and 0 = 0
a and 1 = a (neutrales Element)
Jetzt will ich meine zu prüfende Zahl (Prüfzahl) mit einer anderen Zahl (Vergleichszahl), welche nur aus einsen besteht, bitweise vergleichen. Dabei kommt natürlich die Prüfzahl selber wieder raus. Hat die Prüfzahl an irgendeiner Stelle eine Null, so kann die Vergleichszahl auch dort eine 0 haben, nach dem and Befehl kommt wieder die Prüzahl heraus. Nimmte man dieselbe Vergleichszahl, jdeoch eine andere Prüfzahl (die an der besagten Stelle eine 1 hat), so ist das Ergebnis der AND Verknüpfung von der Prüfzahl verschieden.

Hier mal ein DLX Beispiel zum Test auf Geradzahligkeit. (Hier mit AND realisiert, mit OR wäre es aber kürzer (danke Flo)!)

Code: Alles auswählen

;21 Takte ohne Bypass, mit 11
	.text
;				0x20000
;
start:	lhi r1,0x10
	ori r1,r1,0x2000
	lw r2,(r1)
	lhi r3,0xffff
	ori r3,r3,0xfffe
	and r4,r3,r2
	seq r5,r4,r2     ;r5=1 wenn data gerade
	trap 0
;
	.data 	0x102000
;
	.word	0x2
etwas besser wäre allerdings, das ganze so zu schreiben:

Code: Alles auswählen

;17 Takte ohne, 10 mit
	.text
;				0x20000
;
start:	lhi r1,0x10
	ori r1,r1,0x2000
	lw r2,(r1)
	ori r4,r2,0x1
	seq r5,r4,r2      ;r5 ist 0 wenn data gerade
	trap 0
;
	.data 	0x102000
;
	.word	0x2
Zuletzt geändert von FSW am 13.02.2009 15:45, insgesamt 1-mal geändert.
Das Gute an den schlechten Dingen ist, das auch sie ein Ende haben.

Benutzeravatar
virtualG
Beiträge: 95
Registriert: 14.12.2008 17:24
Matrikel: 2012

Re: DLX

Beitrag von virtualG » 13.02.2009 15:25

Um ganz einfach zu gucken, ob ne zahl negativ ist, kann man das vorzeichen bit analysieren. da alle zahlen im B komplement sind, steht das v-bit auch an 1. stelle

...lade paar konstanten (r2 zu prüfen und ggf positiv machen)

Code: Alles auswählen

          srli r3,r2, 31  
         bnez r3, next (befehl tauschen ggf. überspringen)
         sub r2,r0,r2
next:  sw r2, addr_irgendwo
EDIT: An flo: Warum so kompliziert prüfen? wenn ne zahl gerade ist, ist das 1. bit 0 sonst 1. Also einfach ein AND verknüpfung mit 0x1 machen und ein BEQZ oder BNEZ auf das ergebnis laufen lass. dann spart man sich den SXX befehl
„Jetzt bin ich der Tod geworden, Zerstörer der Welten.“
— Robert Oppenheimer, nach dem Test der 1. Atombome — aus der „Bhagavadgita“

Benutzeravatar
FSW
Beiträge: 297
Registriert: 14.10.2008 09:14
Name: Frank
Geschlecht: männlich
Studienrichtung: Elektrotechnik
Matrikel: 2008
Angestrebter Abschluss: Dipl-Ing.
Contact:

Re: DLX

Beitrag von FSW » 13.02.2009 15:39

Stimmt :idea:
wenn du das ergebnis in einem register haben willst kommst du aber um nen Set Befehl nich drumrum.

[EDIT]: wenn es tatsächlich nur ums Prüfen der Geradzahligkeit geht kann man natürlich auch dann gleich das Ergebnis des And-Befehls nehmen.
Zuletzt geändert von FSW am 13.02.2009 15:44, insgesamt 2-mal geändert.
Das Gute an den schlechten Dingen ist, das auch sie ein Ende haben.

FelixKoettig
Beiträge: 123
Registriert: 25.11.2008 17:01

Re: DLX

Beitrag von FelixKoettig » 13.02.2009 15:41

muss man nicht um beim b-koplement aus ner negativen eine postive zahl zu machen nach dem negieren noch + 1 rechnen ?

Sebastian Benke
Beiträge: 113
Registriert: 14.10.2008 19:36
Geschlecht: männlich
Matrikel: 2008
Angestrebter Abschluss: Bachelor

Re: DLX

Beitrag von Sebastian Benke » 13.02.2009 15:47

Danke für die Antworten. Finde die Lösungen gut, die erste von meddle find ich net schlecht. Weil se wirklich einfach zu verstehen ist und dirket ohne Umwege funkt. Die anderen sind aber auch gut, da versteht man die Materie dahinter. Danke

Antworten

Zurück zu „1. Semester: Diskussionen“