You are not logged in.

Soul

Trainee

  • "Soul" started this thread

Posts: 79

Date of registration: Oct 4th 2007

1

Sunday, August 17th 2008, 10:47am

Rechnerarchitektur

Ich sitze da jetzt schon einige Tage dran und weiß einfach nicht, wie man das vernünftig lernen soll.
Vor allem all das Zeug um die Mikroprogramme, MINIMAX Maschine etc.
Im Skript selbst ist das Ganze auch mehr kryptisch dargestellt, hat also jemand vielleicht einen guten Link oder eine Buchempfehlung, wo man das Ganze noch einmal nachlesen könnte?

Skuld

Erfahrener Schreiberling

  • "Skuld" is male

Posts: 344

Date of registration: Oct 2nd 2007

Occupation: Student

2

Sunday, August 17th 2008, 11:24am

Es gibt ein Skript? xD
Hello, IT, have you tried turning it off and on again?

Wo schlafen Schmetterlinge eigentlich?

3

Sunday, August 17th 2008, 11:45am

Glaube bei GDR gelten die Powerpoint-Folien als Skript. Zum Thema Buchempfehlung gibt es auf Stud.IP eine Literaturliste. Wär aber natürlich schöner, wenn es ähnlich wie in GDS ein richtiges Skript dazu gäbe.

This post has been edited 1 times, last edit by "0x17" (Aug 17th 2008, 11:47am)


D-Style

Unregistered

4

Sunday, August 17th 2008, 1:25pm

Von nem Buch lernen ist für eine Klausur recht ungünstig. Ich empfehle einfach die im Stud.IP hochgeladenen Klausuren durchzuackern (Lösungen stehen am Ende) und weil das nicht soviele sind vielleicht nochmal die Übungen anschauen. Das "Skript" höchstens zum Nachschlagen benutzen.

Currywurst mit Pommes

Erfahrener Schreiberling

Posts: 438

Date of registration: Oct 14th 2002

5

Sunday, August 17th 2008, 1:48pm

Ich kann das mit den Klausuren nur bestätigen. Die Rechnerarchitektur Klausuren ähneln sich sehr. Man erkennt gut, was zu lernen ist. Ich glaube eine MINMAX Aufgabe kommt immer dran.

BLUESCREEN

Junior Schreiberling

  • "BLUESCREEN" is male

Posts: 244

Date of registration: Oct 11th 2005

6

Sunday, August 17th 2008, 2:05pm

Wär aber natürlich schöner, wenn es ähnlich wie in GDS ein richtiges Skript dazu gäbe.


Da müsst ihr euch dran gewöhnen. Es gibt nichtmal zu jeder dritten Vorlesung ein Skript (grobe Schätzung) - statt dessen Folienschlachten ohne Ende ...
Zumindest zu den Mathevorlesungen gibt es eig. immer ein Skript. Im Zweifelsfall von einem anderen Dozenten (auf der Website des Instituts suchen), aber die Themen sind meist gleich.
Ansonsten gibt es zu vielen Vorlesungen Mitschriften von anderen Studenten, die ihr nutzen könnt.

Zum Lernen für die Klausur sind aber die Übungsblätter im Normalfall vorzuziehen. Haltet euch also nicht zu lange mit Skript/Folien auf.

Jannis

Trainee

  • "Jannis" is male

Posts: 45

Date of registration: Oct 5th 2007

7

Sunday, August 17th 2008, 2:29pm

Naja, aber wenn die Klausur wieder ähnlich wie die Testat-Klausur aussehen wird, sollte man schon ein paar Blicke auf die Folien werfen… Wobei die Übungsaufgaben für die Klausur wohl wirklich am wichtigsten sind.

Bastian

Dies, das, einfach so verschiedene Dinge

Posts: 988

Date of registration: Sep 30th 2007

8

Sunday, August 17th 2008, 2:56pm

Naja, aber wenn die Klausur wieder ähnlich wie die Testat-Klausur aussehen wird, sollte man schon ein paar Blicke auf die Folien werfen… Wobei die Übungsaufgaben für die Klausur wohl wirklich am wichtigsten sind.

Im Bezug auf die Testatklausur hat Prof. Brehm betont, dass die anstehende Klausur wieder "SRA-typischer" gestaltet werden wird.

Soul

Trainee

  • "Soul" started this thread

Posts: 79

Date of registration: Oct 4th 2007

9

Sunday, August 17th 2008, 6:14pm

Gibs den irgendwo eine Zusammenfassung zur MINIMAX Maschiene bzw. wie dieses Flussdiagramm erstellen funktioniert, ich steig da immer noch ganz und gar nicht bei den Befehlen durch.

Sunny

Praktikant

Posts: 12

Date of registration: Mar 16th 2008

10

Tuesday, August 19th 2008, 9:54pm

War eigentlich jemand in der Fragestude bei GRA?
Was wurde da besprochen?

@ Soul:

Ich wüsste leider auch nicht wo man eine Zusammenfassung finden soll, habe eigentlich gar keine Infos in I-net zu MINI-MAX finden können :thumbdown:
Welche Fragen interessieren Dich außer Datenflussdiagramm? Bei Datenflussdiagramm steige ich selber noch nicht wirklich durch.

  • "Schokoholic" is male

Posts: 2,518

Date of registration: Oct 4th 2006

Location: Hannover

Occupation: Haarspaltung

11

Wednesday, August 20th 2008, 2:51pm

War eigentlich jemand in der Fragestude bei GRA?
Was wurde da besprochen?
Ich war da. Wir haben eigentlich hauptsächlich Fragen beantwortet, die beim durchrechnen alter Klasuren aufgetaucht sind. Da gab es immer wieder Dinge in den Lösungen die den Leuten nicht auf en ersten Blick klar waren. Alte Klausuren rechnen ist übrigens eine sehr gute Idee, und was dann noch an Fragen übrig bleibt kann man mit in die nächste Fragestunde nehmen. Die Klausuren mitsamt Lösungen findet man im Stud.IP.


Quoted

Ich wüsste leider auch nicht wo man eine Zusammenfassung finden soll, habe eigentlich gar keine Infos in I-net zu MINI-MAX finden können :thumbdown:
Da wüsst ich auch keine weiteren Quellen außer den Klausur- und Übungsaufgaben samt Lösungen. Oder halt die zweite Sprechstunde kommenden Montag.


Quoted

Welche Fragen interessieren Dich außer Datenflussdiagramm? Bei Datenflussdiagramm steige ich selber noch nicht wirklich durch.
Sekunde mal, ich glaub hier liegt ein Missverständnis vor. Was genau meinst du denn mit "Datenflussdiagramm"? Bei der Minimax-Maschine gibts nämlich zwei Arten von Diagrammen die beide aus Kästchen und Pfeilen bestehen:
  1. Datenflussdiagramm (auch Datenpfad): Das was ich darunter verstehen würde sind diese vorgegebenen seitenfüllenden Diagramme wo alle Register und die ALU und der Hauptspeicher abgebildet sind und wo man an den Pfeilen sehen kann was mit welchen anderen Teilen verbunden ist, das heißt wo die Daten lang "fließen" können. (Beispiel: Klausur Frühjahr 2006, Seite 4) Meintest du das?
  2. Programmflussdiagramm (auch einfach Flussdiagramm): Sind die Diagramme die man meist selber Zeichnen soll und die darstellen was die Maschine tun soll, wie ein Programm halt. (Beispiel: Klausur Frühjahr 2006, Lösung zu Aufgabe 3 c, Seite 12)

Sunny

Praktikant

Posts: 12

Date of registration: Mar 16th 2008

12

Wednesday, August 20th 2008, 9:11pm

Ich meinte das Flussdiagramm...
Ich bin mir noch nicht ganz sicher was die einzelnen Zuweisungen bedeuten, wie z.B:
MAR <- AT , im Skript ist es zwar als "Adresse aus Adressteil des Befehls" erläutert, aber sehr weit hat mich das nicht wirklich gebracht :S
oder
IR<-MDR . Werden Hier Daten in den Befehlregister geladen, irgendwie macht es für mich keinen Sinn ?(
sowie
M[MAR] <- MDR , bedeutet es, dass man vorhandenen Daten in das Memory Adress Register nun abspeichert?

derSmutje

Alter Hase

  • "derSmutje" is male

Posts: 295

Date of registration: Dec 7th 2004

13

Thursday, August 21st 2008, 12:51am

Ich meinte das Flussdiagramm...
Ich bin mir noch nicht ganz sicher was die einzelnen Zuweisungen bedeuten, wie z.B:
MAR <- AT , im Skript ist es zwar als "Adresse aus Adressteil des Befehls" erläutert, aber sehr weit hat mich das nicht wirklich gebracht :S
Der Pfeil bedeutet in der Register-Transfer-Notation einfach eine Zuweisung des enthaltenen Datums des rechts vom Pfeil stehenden Registers an das Register, welches auf der linken Seite vom Pfeil steht. In diesem speziellen Fall ist die Quelle der Adressteil des Befehls. Der komplette Befehl ist im Instruction-Register (IR) gespeichert und besteht aus 8 Bit Opcode und 24 Bit Adressteil (der angegebene Operand bei Befehlsaufruf). Mit AT sind nun also diese 24 Bit Adressteil gemeint. Der Befehl sagt nun aus, dass dieser Adressteil in das Register MAR kopiert werden soll. In diesem speziellen Zusammenhang scheint der 24 Bit Adressteil also eine Speicheradresse zu enthalten, weil ansonsten hätte es wohl keinen Sinn, ihn in das "Memory Adress Register" zu kopieren, welches i.A. nur für Speicherzugriffe genutzt wird.
oder
IR<-MDR . Werden Hier Daten in den Befehlregister geladen, irgendwie macht es für mich keinen Sinn ?(
Dieser RT-Befehl kommt z.B. in der IFetch-Phase vor. Während der IFetch-Phase wird der vom Programm-Counter (PC) angezeigte nächste Befehl aus dem Speicher geholt und in das Instruction Register (IR) geladen. Macht also sowei Sinn;) Im IR steht der Befehl samt Adressteil dann während der Abarbeitung des Befehls zur Verfügung, um zB (wie oben) den Adressteil weiter zu nutzen. Etwa wie oben als Speicheradresse, oder, wie in anderen Beispielen, als zB Anzahl von geforderten Durchläufen.

sowie
M[MAR] <- MDR , bedeutet es, dass man vorhandenen Daten in das Memory Adress Register nun abspeichert?

Ich glaube du meinst das Richtige. Dieser Befehl bewirkt, dass das Datum, welches im Memory Data Register (MDR) vorliegt, in den Hauptspeicher an die Adresse gespeichert wird, die im Register MAR ("Memory Adress Register") steht.
/join #inf

Sunny

Praktikant

Posts: 12

Date of registration: Mar 16th 2008

14

Thursday, August 21st 2008, 11:31am

hmm... :huh:
bin erlich gesagt nicht viel schlauer geworden als vorher *schäm*...
Ich meine ich kenne die einzelnen Register bzw. die Namen und das der Pfeil eine Zuweisung ist, war mir auch klar.
Vielleicht ist es einfacher mit konkreten Beispielen die Fragen zu klären.
Beispeil Klausur Herbst 06:
Die Aufgabe:
"Bevor ein Befehl ausgeführt wird, wird dieser als erstes vollständig (Opcode und Operanden)
aus dem Hauptspeicher in die CPU geladen.
Ergänzungen zur aus dem Vorlesungsskript bekannten MINIMAX-Architektur sind grau hinterlegt (s. Abbilung und Tabellen unten). Insbesondere sind ein Register DEST
und eine Sign Extension Unit für das MAR-Register ergänzt worden.
S.L ALU resultB30..0@0 //
Also Multiplikation mit 2
Die CPU soll verschiedene Maschinenbefehle durchführen, wobei Sie folgenden Befehl implementieren
sollen: QUINT n; (mit n: 24 bit Zahl)
Der QUINT-Befehl soll, beginnend ab der Adresse DEST im Hauptspeicher, die n ersten Werte verfünffachen
"

so nun das Flussdiagramm:
"Für die Realisierung auf der Minimax-Maschine soll ein Flussdiagramm für das zu entwickelnde
Mikroprogramm erstellt werden. Vervollständigen Sie folgendes Diagramm. Der Inhalt des Registers DEST darf nicht verändert werden.
Beachten Sie den Fall n=0.
Benutzen Sie bei Ihrer Lösung die Formel 5x= 2*(2x) + x."


Die erste Frage vorweg, was ist Sign Extension Unit?

MAR <- AT + DEST // bestimmt man hier ab welcher Adresse man beginnen soll? Aber dann hätte man ja Quint dazu addieren müssen nicht // DEST ?(
MAR-DEST ==0 // hier wird ja überprüft ob n=0 ist, also stellt AT in diesem Fall n dar, oder?! (Ist es denn immer so, dass man AT sich als n // vorstellen kann?)

MAR <- MAR-1
// Wenn man oben die Adresse bistimmt hat, wieso subtrahiert man jetzt? Also hab ich die erste Zuweisung komplett
missverstanden...


was Anschließend kommt habe ich verstanden. Ich habe große Schwierigkeiten das Flußdiagramm vor dem "eigentlichen" Programmbeginn also vor der Schleife zu erstellen.

This post has been edited 1 times, last edit by "Sunny" (Aug 21st 2008, 11:33am)


creature

Trainee

  • "creature" is male

Posts: 74

Date of registration: Feb 13th 2004

15

Thursday, August 21st 2008, 12:02pm


Die erste Frage vorweg, was ist Sign Extension Unit?


Educated guess (nach Jahrelanger Assembler-Erfahrung):
Wenn Du z.B. einen 16 Bit Wert in ein 32 Bit Register lädst, werden die übrigen 16 bit auf Null gesetzt. Wenn der 16 Bit Wert nun aber eine negative Zahl darstellt (oberstes Bit auf "1"), wäre das natürlich falsch. Da in dem 32-Bit Wort das oberste Bit auf "0" ist und daher der 32-Bit Wert positiv wäre. Daher wird das oberste Bit des 16-Bit Wertes in alle übrigen bits kopiert. Ich vermute nun also, das genau das die Sign Extension Unit macht.

Ich hoffe ich habe jetzt nicht komplett am Thema vorbei erzählt :)



MAR <- AT + DEST // bestimmt man hier ab welcher Adresse man beginnen soll? Aber dann hätte man ja Quint dazu addieren müssen nicht // DEST ?(


Im MAR steht die Adresse von der Daten gelesen werden sollen. Da Du ab der Adresse DEST beginnen sollst, is das mit dem DEST schon richtig. Ich weiss jetzt leider nciht was AT ist, aber DEST scheint hier richtig zu sein.


MAR-DEST ==0 // hier wird ja überprüft ob n=0 ist, also stellt AT in diesem Fall n dar, oder?! (Ist es denn immer so, dass man AT sich als n // vorstellen kann?)
MAR <- MAR-1
// Wenn man oben die Adresse bistimmt hat, wieso subtrahiert man jetzt? Also hab ich die erste Zuweisung komplett
missverstanden...


Wenn AT das n sein soll, dann passiert das folgende:
Du bestimmst die Adresse des LETZTEN Wertes mit MAR <- AT + DEST
Und berechnest dann die Werte (mit Shift und Add) und decrementierst die Addresse jeweils um eins.
die Schleife ist beendet, wenn MAR = DEST ist, also MAR-DEST = 0. Da MAR am Schleifenbeginn auf DEST+AT gesetz wurde.

Und da sag noch einer man lernt nix inna Uni. Ich hatte das Zeug noch im alten Jahrtausend gelernt :)

derSmutje

Alter Hase

  • "derSmutje" is male

Posts: 295

Date of registration: Dec 7th 2004

16

Thursday, August 21st 2008, 12:08pm


Die Aufgabe:
"Bevor ein Befehl ausgeführt wird, wird dieser als erstes vollständig (Opcode und Operanden)
aus dem Hauptspeicher in die CPU geladen.
Ergänzungen zur aus dem Vorlesungsskript bekannten MINIMAX-Architektur sind grau hinterlegt (s. Abbilung und Tabellen unten). Insbesondere sind ein Register DEST
und eine Sign Extension Unit für das MAR-Register ergänzt worden.
S.L ALU resultB30..0@0 //
Also Multiplikation mit 2
Die CPU soll verschiedene Maschinenbefehle durchführen, wobei Sie folgenden Befehl implementieren
sollen: QUINT n; (mit n: 24 bit Zahl)
Der QUINT-Befehl soll, beginnend ab der Adresse DEST im Hauptspeicher, die n ersten Werte verfünffachen
"

so nun das Flussdiagramm:
"Für die Realisierung auf der Minimax-Maschine soll ein Flussdiagramm für das zu entwickelnde
Mikroprogramm erstellt werden. Vervollständigen Sie folgendes Diagramm. Der Inhalt des Registers DEST darf nicht verändert werden.
Beachten Sie den Fall n=0.
Benutzen Sie bei Ihrer Lösung die Formel 5x= 2*(2x) + x."


Die erste Frage vorweg, was ist Sign Extension Unit?

Die Minimax-Maschine hat eine HS-Adressbreite von 24 Bit. Deswegen ist zB das MAR-Register nur 24Bit breit, während alle Datenregister 32 Bit breit sind. Damit die ALU, die auf 32-Bit breiten Daten arbeitet, nun mit Adressen rechnen kann, müssen die 24 Bit auf 32 Bit erweitert werden. Dies macht die Vorzeichenerweiterung. Es werden also die 8 most significant bits entsprechend aufgefüllt, damit dann mit der ALU gerechnet werden kann. Wird die Adresse dann wieder im MAR abgespeichert, so gehen die 8 MSBs wieder verloren, da es ja nunmal nur 24 Bit breit ist. Diese Erweiterung ist also technisch nötig, damit man mit der gleich ALU auf Daten und auf Adressen arbeiten kann.


MAR <- AT + DEST // bestimmt man hier ab welcher Adresse man beginnen soll? Aber dann hätte man ja Quint dazu addieren müssen nicht // DEST ?(

In der Beschreibung des Befehls QUINT steht ja

Quoted

Der QUINT-Befehl soll, beginnend ab der Adresse DEST im Hauptspeicher, die n ersten Werte verfünffachen

Der Befehl heißt also QUINT. Die Adresse, von der an n Werte verfünffacht werden sollen, steht im Register DEST.
Tatsächlich wird hier nicht nur DEST (die Adresse des ersten zu bearbeitenden Wertes) in MAR gespeichert, sondern DEST+AT, also Anfangsadresse+Anzahl zu bearbeitender Werte. Nach der Ausführung dieses Befehls steht in MAR also die Adresse des auf den letzten zu bearbeitenden Wert folgende Wert!
Im Endeffekt wird das Programm also vermutlich die Werte "rückwärts" beginnend mit demjenigen an der Speicherstelle DEST+AT-1 bearbeiten.

MAR-DEST ==0 // hier wird ja überprüft ob n=0 ist, also stellt AT in diesem Fall n dar, oder?! (Ist es denn immer so, dass man AT sich als n // vorstellen kann?)

Also eigentlich wird mit MAR-DEST==0 überprüft, ob die Adresse in MAR der Adresse in DEST entspricht. Sprich, ob die Anfangsadresse (die ja die ganze Zeit in DEST gespeichert und vermutlich nicht verändert wurde) vom MAR erreicht worden ist. Da das Programm "rückwärts" durch die zu bearbeitenden Speicheradressen läuft, kann das Programm beendet werden, wenn die Anfangsadresse erreicht worden ist. Es wird somit "indirekt" n==0 überprüft. Wird der Befehl mit n=0 aufgerufen, so führt ja der Befehl MAR<-DEST+AT gerade zu MAR<-DEST+0. Dann wird das Mikroprogramm sofort beendet und es findet kein Schleifendurchlauf statt. Ist n>0, dann wird ja durch MAR<-DEST+AT ja gerade DEST+n in MAR gespeichert. Dann wird die Schleife erst beendet, wenn die Anfangsadresse durch den folgenden Befehl erzeugt worden ist:

MAR <- MAR-1 // Wenn man oben die Adresse bistimmt hat, wieso subtrahiert man jetzt? Also hab ich die erste Zuweisung komplett
missverstanden...

Ich hoffe, inzwischen ist klar geworden, warum an dieser Stelle immer 1 subtrahiert wird. Beim erster Durchlauf der Schleife steht nach diesem Befehl also DEST+AT-1 in MAR und somit die Adresse der zuletzt zu bearbeitenden Speicherzelle.
/join #inf

Sunny

Praktikant

Posts: 12

Date of registration: Mar 16th 2008

17

Thursday, August 21st 2008, 1:07pm

ahhh 8o super! :thumbsup:
endlich hab ich es verstanden !!!... zumindest an diesem Beispiel :rolleyes: !
Ich Danke Euch!

Sunny

Praktikant

Posts: 12

Date of registration: Mar 16th 2008

18

Friday, August 22nd 2008, 10:20am

Kaum hat man sich gefreut, dass man vorangekommen ist, schon stogniert man an der nächsten Frage ;(
Und wieder das Flussdiagramm:

"Die CPU soll verschiedene Maschinenbefehle durchführen, wobei Sie folgenden Befehl implementieren
sollen:
DIVIDE(Adr); (mit Adr: 24 bit Speicheradresse)
Der Befehl soll folgende Operation ausführen: M[Adr]=OP1 DIV ACCU.
Hinweis: Der Operator DIV ermittelt das Ergebnis einer ganzzahligen Division. In den beiden
Registern OP1 und ACCU stehen positive Ganzzahlen, das TMP-Register ist zum Programmstart
zufällig belegt"

Lösung:

1) Temp <- 0
2) OP1 <- OP1 - ACCU
3) OP1 and 2^31 ==0? ->ja-> 4) Temp <- Temp +1 -> 2)
->nein
5) MAR <- AT
6) MDR <- TMP
7) M[MAR] <- MDR
8) GOTO IFETCH

Schritt 1 ist Zähler, der zählst "wie oft passt" ACCU in OP1 (also Division), deswegen auch die Schleife.
Aber die Sprungüberprüfung ist mir nicht klar, also 3)
wenn die Zahl klein ist z.B OP1 = 16 dann ist ja nur der
2^4 bit auf eins gesetzt und alle folgende bits sind null.
dann würde ja bei der Abfrage immer Null rauskommen ?(

im Schritt 5 stellt man die Adresse fest wo man das ERgebnis abspeichern soll.
6) weist man das Ergebnis den Momory Data Register zu
und schließlich in 7) speichert man das Ergebnis ab.
richtig? :huh:

vielen Dank für Eure Mühe im Voraus :rolleyes:

  • "Schokoholic" is male

Posts: 2,518

Date of registration: Oct 4th 2006

Location: Hannover

Occupation: Haarspaltung

19

Friday, August 22nd 2008, 1:53pm


wenn die Zahl klein ist z.B OP1 = 16 dann ist ja nur der
2^4 bit auf eins gesetzt und alle folgende bits sind null.
dann würde ja bei der Abfrage immer Null rauskommen

Als kleiner Tip für deine Überlegung: Angenommen du hast OP1=16 und ACCU=19. Dann kommt bei der Abfrage Null raus (also der "ja"-Zweig). Aber wenn du dann OP1<-OP1-ACCU, also 16-19 rechnest, was kommt dann raus? Wie sieht das in Binärdarstellung aus?

Quoted

im Schritt 5 stellt man die Adresse fest wo man das ERgebnis abspeichern soll.
6) weist man das Ergebnis den Momory Data Register zu
und schließlich in 7) speichert man das Ergebnis ab.
richtig?

Richtig. :)

Sunny

Praktikant

Posts: 12

Date of registration: Mar 16th 2008

20

Friday, August 22nd 2008, 2:02pm

Natürlich!
dann wird die Zahl negativ und MSB wird zu 1 :thumbsup:

Danke Dir!!! ^^