Informatik 1 Klausurvorbereitung

Tomarendt
Beiträge: 7
Registriert: 16.11.2011 16:21
Name: Tom
Geschlecht: männlich
Matrikel: 2011
Angestrebter Abschluss: Dipl-Ing.
Wohnort: Dresden

Informatik 1 Klausurvorbereitung

Beitrag von Tomarendt » 07.02.2012 21:27

Hallo an alle,

ich erstelle diesen Thread, weil ich der Meinung bin, dass man einfache Problemlösungen nicht stundenlang suchen sollte, sondern schnell und unkomliziert an Lösungsansätze gelangen könnte.

Wenn ihr also irgendwelche relevanten Lösungen kennt, dann ist hier platz dafür.

Tomarendt
Beiträge: 7
Registriert: 16.11.2011 16:21
Name: Tom
Geschlecht: männlich
Matrikel: 2011
Angestrebter Abschluss: Dipl-Ing.
Wohnort: Dresden

Re: Informatik 1 Klausurvorbereitung

Beitrag von Tomarendt » 07.02.2012 21:32

Zur Aufgabe 8 der Klausur von 2011 (ich glaube es betrifft uns dieses Jahr auch)

Ich habe nen halben Tag damit verschwendet, herauszufinden, wie man so ein Steuerwerk aus einem Zustandsgraphen denn nun wirklich ausfüllt. In der Übung jedenfalls hab ich's nicht begriffen, doch siehe da... die Lösung ist manchmal leichter, als man denkt.

1. Die Zustände Z0 - Z6 werden zunächst binär durchnummeriert. Also:

Z0 = 000
Z1 = 001
Z2 = 010
Z3 = 011
Z4 = 100
Z5 = 101
Z6 = 110

2. Dann nummerieren wir die möglichen Pfeile im Baum dezimal durch dabei müssen wir beachten, dass für P die Adressen 8-15 und für 'Pnicht' 0-7 zur Verfügung stehen.

3. Führt nur ein Pfad zum nächsten Zustand (Bsp.: 000 -> 001) schreiben wir an den Pfad 0000 und 1000. Das sind die binären äquivalente zu den Steuerwerksadressen.

Das Resultat ist, dass wir den folgezustand (001) und dessen Output in die Adressen 0000 und 1000 eintragen.

4. Ist der Pfad zweigeteilt (ein pfeil P zeigt nach 001 und der andere Pfeil "Pnicht" zeigt nach z.B. 100)
Dann ist der Folgezustand von 0000 (0) = 100 und der Folgezustand von 1000 (8) = 001

Diese Binäradressen brauchen wir dann nur noch in Zustand 0 und 8 eintragen und zusätzlich müssen wir nur noch prüfen, ob L oder S bei dem Zustand aktiv sein soll oder nicht. Steht nix da, tragen wir 00 ein.

Astarte
Beiträge: 29
Registriert: 23.12.2009 15:31

Re: Informatik 1 Klausurvorbereitung

Beitrag von Astarte » 07.02.2012 22:46

Also uns wurde das in der Übung so erklärt:

Schau die einfach einen Zustand an und dann schaue, was auf den Folgen könnte. Das angeben und dann der Reihe nach. Immer Zustand 0 bis n anschauen und dann die drauffolgenden Zustände.
Deswegen ist das nie bei mir in der gleichen Reihenfolge, das man jetzt den Pfeilen hintereinander folgen kann. Ich hoffe mal, dass das auch so in der Klausur geht, denn so vergisst man nichts. In der Übung war das ja auch nicht wirklich in einer Reihenfolge.

Wurde eigentlich nochwas dazugesagt, ob es wieder keine Folgefehler beim Pipelining gibt?

et-xmp-82
Beiträge: 97
Registriert: 14.12.2010 19:37
Geschlecht: männlich
Studienrichtung: Elektrotechnik
Matrikel: 2010

Re: Informatik 1 Klausurvorbereitung

Beitrag von et-xmp-82 » 07.02.2012 23:00

Astarte hat geschrieben: Wurde eigentlich nochwas dazugesagt, ob es wieder keine Folgefehler beim Pipelining gibt?
Also im letzten Wintersemester 2010/2011 gab es keine Folgefehler beim Pipelining. Prof. Hochberger sagte dazu nur: ein Fehler am Anfang ist ein Fehler am Ende. Es ist daher davon auszugehen, dass es auch in Zukunft keinerlei Folgefehler auf die Pipliningaufgabe geben wird.

Katinka
Beiträge: 1
Registriert: 02.11.2011 13:21
Matrikel: 2010

Re: Informatik 1 Klausurvorbereitung

Beitrag von Katinka » 08.02.2012 16:30

also die allererste Erklärung hab ich so halb verstanden, aber mir ist noch nicht ganz klar wie man jetzt darauf kommt was in die Spalte Y(L,S) (Probeklausur 2011, Aufgabe 8) rein soll.
Kannst du mir da noch bitte weiterhelfen?
Das wäre nett! Vielen Dank!

SophieAnatidenphobie
Beiträge: 3
Registriert: 01.02.2012 20:34
Matrikel: 2010

Re: Informatik 1 Klausurvorbereitung

Beitrag von SophieAnatidenphobie » 08.02.2012 19:03

hey!
mir hat die erklärung auch sehr geholfen, nur eine frage hätte ich da noch:
ist es im 2. schritt relevant, dass "P" mit 8-15 nummeriert wird und "P nicht" von 0-7? Oder könnte man das genausogut vertauschen?
Dankeschön schonmal!

marcoo1491
Beiträge: 2
Registriert: 14.10.2011 12:02
Matrikel: 2010

Re: Informatik 1 Klausurvorbereitung

Beitrag von marcoo1491 » 08.02.2012 19:58

Du guckst zuerst, wo L und S aktiv sind (zB bei Z1 -> L=1). Danach suchst du dir in der Spalte Z' dein Z1 (001) und dort kommt dann ein 1,0 hin (in der Spalte Y(L,S)) Wenn S aktiv ist, schreibst 0,1 rein ;)
(in diesem Fall bei Adresse 8)

Mfg

Benutzeravatar
crofa
Beiträge: 1
Registriert: 14.10.2011 17:24
Matrikel: 2011
Angestrebter Abschluss: Dipl-Ing.

Re: Informatik 1 Klausurvorbereitung

Beitrag von crofa » 08.02.2012 23:41

SophieAnatidenphobie hat geschrieben:hey!
mir hat die erklärung auch sehr geholfen, nur eine frage hätte ich da noch:
ist es im 2. schritt relevant, dass "P" mit 8-15 nummeriert wird und "P nicht" von 0-7? Oder könnte man das genausogut vertauschen?
Dankeschön schonmal!
A0 - A3 geben die Adresse an, Wenn P gleich 1 ist, bedeutet das, dass die erste stelle der vierstelligen binärzahl 1 ist: 1XXX, die hat den Wert 8. Deswegen ist man sobald P=1 im unteren bereich. Die 4stellige binärzahl kann hier nur einen wert annehmen der größer/gleich 8 ist. So hätt ich des jedenfalls verstanden.

Tomarendt
Beiträge: 7
Registriert: 16.11.2011 16:21
Name: Tom
Geschlecht: männlich
Matrikel: 2011
Angestrebter Abschluss: Dipl-Ing.
Wohnort: Dresden

Re: Informatik 1 Klausurvorbereitung

Beitrag von Tomarendt » 09.02.2012 10:21

Genau so ist es... am Besten wird ersichtlich, wo alles stehen muss, wenn man die Adressen nicht Dezimal, sondern Binär in die Tabelle schreibt. (für 0 = 0000, für 1 = 0001) dann fängt man an die Bäume durchzunummerieren P fängt bei 1000 und Pnicht bei 0000 ne andere Reihenfolge gibts da nicht.

P.S. auf die Frage, wie das mit dem Y(L,S) ist: Das steht am baum. rechts. Wenn du Zustand 0 hast steht nix dran -> führt zu Y = 00. Zustand 1 steht L=1 dran, also ist Y=10

Tomarendt
Beiträge: 7
Registriert: 16.11.2011 16:21
Name: Tom
Geschlecht: männlich
Matrikel: 2011
Angestrebter Abschluss: Dipl-Ing.
Wohnort: Dresden

Re: Informatik 1 Klausurvorbereitung

Beitrag von Tomarendt » 09.02.2012 10:28

Wer noch Probleme mit der DLX-Pipeline hat, kann sich hier belesen. Ist eigentlich ne super Erklärung
[url]http://www.mr.inf.tu-dresden.de%2Fstudium%2Fwinter%2Finfet1%2Fdocs%2FDLX_Basispipeline.pdf&ei=so8zT9W-LuOh4gTzl5SKAg&usg=AFQjCNEWQ9FDUBRMwWFqVn3YQwKzJ2DUvA&sig2=M5FHREJy2ALfrnYBaNPv2w&cad=rja[/url]

Wichtig ist: Bevor man alles mit "idemw" vollkritzelt und dann einen Fehler bemerkt, sollte man eher vorher die stalls im quellcode markieren und darauf achten, dass alles eingehalten wird.

Benutzeravatar
Hans Oberlander
Beiträge: 2570
Registriert: 19.12.2006 22:22

Re: Informatik 1 Klausurvorbereitung

Beitrag von Hans Oberlander » 09.02.2012 11:46

Der Link geht nicht.

balkon
Beiträge: 1
Registriert: 15.01.2012 11:39
Matrikel: 2010

Re: Informatik 1 Klausurvorbereitung

Beitrag von balkon » 09.02.2012 14:01

http://www.mr.inf.tu-dresden.de/studium ... peline.pdf
Der Link in der richtigen Fassung..

desperate housewife
Beiträge: 3
Registriert: 30.01.2012 14:53
Matrikel: 2011

Re: Informatik 1 Klausurvorbereitung

Beitrag von desperate housewife » 09.02.2012 14:52

Hey, vielen Dank für die Erklärungen! Ich habs jetzt auch gerafft :D

AAO
Beiträge: 7
Registriert: 28.10.2011 09:24
Matrikel: Ich bin doch kein Student.

Re: Informatik 1 Klausurvorbereitung

Beitrag von AAO » 10.02.2012 17:58

Hey,
ich habe eine Frage bzgl. der Adressierung des Datenspeichers und des Programmspeichers in der Übung 7., die ich zur Wiederholung nochmal gemacht habe und auch Voraussetzung für die Aufgabe 4 der Probeklausur ist.

In der aktuellsten Version im Internet startet das Feld 1(Datenspeicher) bei der Adresse 0x0000.
Das Feld 2 beginnt nun bei der Adresse 0x0040.
Die Zahlen stehen somit im 8bit Abstand:

0x0000: 1
0x0008: 2
0x0010: 3
0x0018: 4
0x0020: 5
Etc.

Im Programmspeicher bei der Adresse 0x0020: addi r3, r3, #4 wird jedoch R3 nur um 4 Stellen erhöht.
Nach meiner Überlegung müsste jedoch R3 um 8 erhöht werden, um die nächste Zahl auslesen zu können.

Stimmen meine Überlegungen oder unterliege ich da einem Denkfehler?
& stimmen die Annahmen, dass der Datenspeicher bitweise(d.h. von 0x0000 zu 0x0001 ist 1 bit-Abstand) beschrieben wird und der Programmspeicher byteweise?

Wäre super, wenn da jemand eine Antwort drauf hätte.
Vielen Dank für eure Mühe. :)

Sumpfgolem
Beiträge: 4
Registriert: 29.12.2011 15:55
Studienrichtung: Elektrotechnik
Matrikel: 2011

Re: Informatik 1 Klausurvorbereitung

Beitrag von Sumpfgolem » 10.02.2012 18:29

Hallo,

ich hab nochmal ne kurze Frage zur DlX Porgrammierung:

Kann mir mal jemand diesen Befehl so genau wie möglich erklären:

LB R1, 0x1000(R0)


Vielen Dank im voraus.

justakick
Beiträge: 9
Registriert: 05.11.2010 14:46

Re: Informatik 1 Klausurvorbereitung

Beitrag von justakick » 10.02.2012 19:47

Ersten Machen wir kein DLX, sondern MIPS.
Zweitens: Der Befehl Load Byte, Lädt ein Byte. LB R1, 0x1000(R0).
Nun verwendest du die Zahl, die in dem Register in Klammern steht als Adresse. Bei R0 ist das immer die Null.
Dazu addierst du die Zahl vor der Klammer (Displacement! Heute in der Konsultation haben die gemeint, das Offset nicht wirklich richtig ist) zu dem Wert aus deinem Quellregister. Und das wird jetzt als Adresse in dein Zielregister abgelegt.
Rt= MEM [Rs+Displacement].

Bei Storebefehlen, wie z.B. SW R4, 8(R6), weist du dem Register R4 die Adresse MEM[R6+8] in dem Hauptspeicher zu und der Onhalt von R4 wird dort abgespeichert.

Ich hab mir das mal so gemerkt: Load=L= Lesen eines Wertes einer Adresse in ein Register, Store=S=Speicher eines Registers an einer bestimmten Adresse.

Schließlich ist das Assembler und du weißt sonst nie, wo was wirklich im Hauptspeicher an welcher Adresse steht.

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

Re: Informatik 1 Klausurvorbereitung

Beitrag von schoene » 11.02.2012 10:34

Hallo,

bei Wikipedia habe ich folgenden Satz dazu gefunden, der genau das sagt wie der Begriff bei uns verwendet wird:

"Displacement (vector), the difference between the final and initial position of a point (for instance, the center of mass of a moving object). The actual path covered to reach the final position is irrelevant."

Es ist also auch ein "Offset" zu einer Basisadresse die bei der MIPS dann immer in dem in Klammern eingeschlossenen Register steht. Beide Begriffe können also durchaus gleichberechtigt verwendet werden. Beim Zugriff auf Datenfelder ist aber in der Fachliteratur meist der Begriff "Displacement" verwendet wurden, wodurch sich auch diese Bezeichnung bei den Adressierungsarten eingebürgert hat. Jeder der sich schon etwas genauer mit der Prozessorarchitektur befasst hat, kennt den Begriff im Zusammenhang mit der Adressierung des Speichers.

Sie können also beide Begriffe anwenden, sie sind in unserem Aufgabenbereich völlig gleichberechtigt. Der Begriff "Dilplacement" wird Heute aber auch für sehr viele andere Dinge angewendet, die kaum noch etwas mit der ursprünglichen Bedeutung zu tun haben und kann daher zu Verwechslungen führen. Der Begriff "Offset" ist dagegen immer eindeutig.

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

Re: Informatik 1 Klausurvorbereitung

Beitrag von schoene » 11.02.2012 10:59

AAO hat geschrieben:Hey,
ich habe eine Frage bzgl. der Adressierung des Datenspeichers und des Programmspeichers in der Übung 7., die ich zur Wiederholung nochmal gemacht habe und auch Voraussetzung für die Aufgabe 4 der Probeklausur ist.

In der aktuellsten Version im Internet startet das Feld 1(Datenspeicher) bei der Adresse 0x0000.
Das Feld 2 beginnt nun bei der Adresse 0x0040.
Die Zahlen stehen somit im 8bit Abstand:

0x0000: 1
0x0008: 2
0x0010: 3
0x0018: 4
0x0020: 5
Etc.

Im Programmspeicher bei der Adresse 0x0020: addi r3, r3, #4 wird jedoch R3 nur um 4 Stellen erhöht.
Nach meiner Überlegung müsste jedoch R3 um 8 erhöht werden, um die nächste Zahl auslesen zu können.

Stimmen meine Überlegungen oder unterliege ich da einem Denkfehler?
& stimmen die Annahmen, dass der Datenspeicher bitweise(d.h. von 0x0000 zu 0x0001 ist 1 bit-Abstand) beschrieben wird und der Programmspeicher byteweise?

Wäre super, wenn da jemand eine Antwort drauf hätte.
Vielen Dank für eure Mühe. :)
der Abstand zwischen den einzelnen Datenelementen ist nicht immer 8 Byte groß, sondern nur dann wenn jedes Element in einer eigenen Zeile deklariert wird.

Code: Alles auswählen

        .byte     5
        .word32   8
        .word     12
Alle 3 Werte werden im Abstand von 8 Byte angelegt.

Code: Alles auswählen

    .byte     1,2,3,4,5,6,7,8
    .word32   9,10,11,12
    .word     13,14,15,16
In diesem Fall werden die Daten im Abstand Ihrer Größe abgelegt. Dies alles kann man auch der Dokumentation zum EduMIPS entnehmen!

Im Anhang habe ich eine Datei für den Edumips mit einer solchen Datenstruktur und ein Bild vom Speicherinhalt nach dem Laden des Programms abgelegt.
http://www.mr.inf.tu-dresden.de/studium ... fg61neu2.s
Bild

Ich hoffe jetzt ist Ihnen klar, warum die Werte in unseren Programmen richtig sind. Alle Programme, die in der Übung oder Probeklausur zu finden sind, wurden auf dem Simulator getestet. Sie können Sie auch auf der Web-Seite zum Simulator herunterladen.

http://www.mr.inf.tu-dresden.de/studium ... /mips.html

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

Re: Informatik 1 Klausurvorbereitung

Beitrag von schoene » 11.02.2012 11:22

Katinka hat geschrieben:also die allererste Erklärung hab ich so halb verstanden, aber mir ist noch nicht ganz klar wie man jetzt darauf kommt was in die Spalte Y(L,S) (Probeklausur 2011, Aufgabe 8) rein soll.
Kannst du mir da noch bitte weiterhelfen?
Das wäre nett! Vielen Dank!
Die Spalte des Ausgabevektors wird ausschließlich über den Inhalt der Spalte Z' in der gleichen Zeile bestimmt. Wurde als Nachfolgezustand in Z' die "001" = 1 ermittelt, dann muss bei Y die Ausgabe, welche Z1 zugeordnet ist eingetragen werden. Dabei sind im Z-Graph immer nur die Signale angegeben, die "1" sind. Alle nicht angegebenen Signale sind dann also "0". Für Z1 aus der Probeklausur gilt also: (L=1 und S=0) 1 0 muss in die Spalte für Y eingetragen werden. Ist Z' die "100" = 4, dann ist Y = 0 1 und so weiter. Ist an einem Zustand gar nichts angetragen, dann sind alle Ausgangssignale 0 wie im Zustand 0!

Sumpfgolem
Beiträge: 4
Registriert: 29.12.2011 15:55
Studienrichtung: Elektrotechnik
Matrikel: 2011

Re: Informatik 1 Klausurvorbereitung

Beitrag von Sumpfgolem » 11.02.2012 18:26

Ok danke, das habe ich bis jetzt verstanden.

Dann habe ich nochmal eine Frage zur Klausur vom letzten Jahr:

Bei Aufgabe 5.2.:
Wie kommt man da auf den Wert von R6?
speziell bei dem Befehl:

LHI R6, wert1>>16 kann ich mit "wert1>>16" nichts anfangen.

R6 wird außerdem noch bei dem Befehl 3 verwendet:

ORI R6, R6, wert1&0xffff

unter der Tabelle wird für Wert1 folgendes angeben:

wert1: .word 0x600

Als Lösung für R6 kommt 0x00100400 heraus.

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

Re: Informatik 1 Klausurvorbereitung

Beitrag von schoene » 11.02.2012 19:59

Hallo,*-----------------

das sind spezielle Assembleranweisungen des DLX-Assembler, die werden dieses Jahr nicht vorkommen, da wir dieses Jahr die MIPS verwenden.

Die DLX ist ein 32 Bit Rechner, die auch einen Adressraum von 32 Bit unterstützt. Eine Symbolische Adresse wie "wert1" kann also auch größer als 16 Bit sein! In den Befehlen können aber nur Konstanten mit 16 Bit angewendet werden. Will man eine 32 Bit Konstante laden, dann ist das mit der Befehlsfolge LHI und ORI möglich. Der LHI muss dabei die oberen 16 Bit der Adresse, die "wert1" entspricht in das Zielregister laden. Der Befehl löscht dabei die unteren 16 Bit. Mit der Anweisung "wert1>>16" wird während dem Assemblieren der Zahlenwert von "wert1" 16 mal nach links geschoben und es bleiben die oberen 16 Bit der Adresse "wert1" übrig, die dann in dieser Form in die unteren 16 Bit des Befehls einzutragen sind. Damit sind nun die oberen 16 Bit von "wert1" in R6 in den oberen 16 Bit, während die unteren 16 Bit in R6 alle 0 sind. Mit dem ORI Befehl werden nun noch die unteren 16 in R6 eingefügt. Dabei wird mit "wert1 & 0xffff" durch die bitweise logische UND Verknüpfung von "wert1" und 0xffff nur der untere Teil des Wertes aus maskiert. Die oberen 16 Bit werden dabei alle auf 0 gesetzt. Der ORI fügt nun beide Teile wieder zusammen, wodurch der volle 32 Bit Wert von "wert1" nach beiden Befehlen in R6 vorhanden ist.

Ich hoffe ich konnte helfen. Das ganze ist aber nicht relevant für die Klausur!

sailor
Beiträge: 4
Registriert: 27.10.2011 19:27
Matrikel: 2010

Re: Informatik 1 Klausurvorbereitung

Beitrag von sailor » 13.02.2012 10:54

Hallo,
Ich hab eine Frage zum Piplining.
Bei der Probeklausur aus diesem Jahr steht in der Lösung unter jedem "d" ein "f" im neuen Befehl. Kann ich stattdessen aus den "stall" Befehl verwenden?? Oder gibt es da noch Unterschiede?
Also: fdddemw -> fdddemw
fffdemw -> fssdemw

Und warum ist bei Aufgabe 1.2 das Ergebniss positiv obwohl das Maschinenwort negativ ist?
mfg
Zuletzt geändert von sailor am 13.02.2012 11:06, insgesamt 1-mal geändert.

Seitz
Beiträge: 75
Registriert: 15.11.2010 21:54

Re: Informatik 1 Klausurvorbereitung

Beitrag von Seitz » 13.02.2012 11:05

Kannst du machen. Meint das Gleiche.

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

Re: Informatik 1 Klausurvorbereitung

Beitrag von schoene » 13.02.2012 11:22

sailor hat geschrieben:Hallo,
Ich hab eine Frage zum Piplining.
Bei der Probeklausur aus diesem Jahr steht in der Lösung unter jedem "d" ein "f" im neuen Befehl. Kann ich stattdessen aus den "stall" Befehl verwenden?? Oder gibt es da noch Unterschiede?
Also: fdddemw -> fdddemw
fffdemw -> fssdemw

Und warum ist bei Aufgabe 1.2 das Ergebniss positiv obwohl das Maschinenwort negativ ist?
mfg
Wie schon gesagt ist beides richtig, da der Befehl im Fetch warten muss da die ID-Hardware noch vom vorherigen Befehl belegt ist. Der Befehlslesevorgang ist schon nach dem 1. Takt abgeschlossen, es muss aber 2 Takte gewartet werden bis der Takt zum einschreiben in das Befehlsregister durch den vorhergehenden Befehl wieder freigegeben wird.

In Aufgabe 1.2 steht eindeutig das das Ergebnis eine negative Zahl ist. Und dann wird der Betrag der negativen Zahl ermittelt. Es könnte jetzt noch einmal eine Zeile folgen wie:

Die Zahl ist also -973095424

Dafür war aber kein Platz mehr auf der Folie und das kann man sich auch denken.

sailor
Beiträge: 4
Registriert: 27.10.2011 19:27
Matrikel: 2010

Re: Informatik 1 Klausurvorbereitung

Beitrag von sailor » 13.02.2012 11:35

Danke für die schnellen Antworten.
Hatte mich gewundert, dass es mal so und mal so geschrieben wird.
Aber wenn beides richtig ist, passts ja. :P

Antworten

Zurück zu „1. Semester: Diskussionen“