FB18 - Das Forum für Informatik

fb18.de / Bachelorstudieng / PM Technische Informatik

RS: Blatt 7 - Aufgabe 8

RS: Blatt 7 - Aufgabe 8 2007-02-18 14:41
Anonymer User
Berechnen Sie den Effizienzverlust für eine fünfstufige und eine zehnstufige Befehlspipeline,
falls jeder fünfte Befehl ein Sprungbefehl ist, Sprungbefehle gleichmäßig im Code verteilt
sind und die Pipeline zu Beginn jeden Sprungbefehls wartet bis alle vorhergehenden Befehle
abgearbeitet sind.

Mir ist leider nicht ganz klar, wie man hier den Effzienzverlust ausrechnet.
Wenn ich das richtig verstanden habe, dann liegt meine Effizienzsteigerung bei einer fünfstufigen Pipeline maximal bei 5, da pro Takt ein Befehl fertig wird.
Aber wie berechnet man nun den Verlust?

Re: RS: Blatt 7 - Aufgabe 8 2007-02-18 14:50
T
Fünfstufige Befehspipeline: 1 | 1 # # # # 2 | 2 1 # # # 3 | 3 2 1 # # 4 | 4 3 2 1 # 5 | 5 4 3 2 1 6 | # 5 4 3 2 7 | # # 5 4 3 8 | # # # 5 4 9 | # # # # 5 ---------------- 10 | 6 Die mit # gekennzeichneten Zeit/Station-Schnittpunkte werden nicht genutzt. 20 Schnittpunkte / 4 Zeilen nicht genutzt 25 Schnittpunkte / 5 Zeilen genutzt 45 Schnittpunkte / 9 Zeilen insgesamt Der Effizienzverlust betraegt also: 4 / 9 = 0,444 = 44,4 % Zehnstufige Befehspipeline: 1 | 1 # # # # # # # # # 2 | 2 1 # # # # # # # # 3 | 3 2 1 # # # # # # # 4 | 4 3 2 1 # # # # # # 5 | 5 4 3 2 1 # # # # # 6 | # 5 4 3 2 1 # # # # 7 | # # 5 4 3 2 1 # # # 8 | # # # 5 4 3 2 1 # # 9 | # # # # 5 4 3 2 1 # 10 | # # # # # 5 4 3 2 1 11 | # # # # # # 5 4 3 2 12 | # # # # # # # 5 4 3 13 | # # # # # # # # 5 4 14 | # # # # # # # # # 5 --------------------------------- 15 | 6 90 Schnittpunkte / 9 Zeilen nicht genutzt 50 Schnittpunkte / 5 Zeilen genutzt 140 Schnittpunkte / 14 Zeilen insgesamt Der Effizienzverlust betraegt also: 9 / 14 = 0,643 = 64,3 %
so hat herr lehmann das in der vorlesung erklaert. in den folien steht dazu nichts (soweit ich weiss)

edit:sieht mit gleich viel besser aus

Re: RS: Blatt 7 - Aufgabe 8 2007-02-18 15:28
Anonymer User
Danke für die schnelle Anwort!
Leider erschließt sich mir nicht, wie man daraus einen Effizienzberlust ableitet.
Die Zahlen 1-5 stehen jeweils für die "Einzelteile" eines Befehls, oder?

Re: RS: Blatt 7 - Aufgabe 8 2007-02-18 15:32
T
Die Zahlen 1-5 stehen jeweils für die "Einzelteile" eines Befehls, oder?
ja.
wären alle # weg, hiesse das dass der rechner soviel rechnet wie er kann. also 100% effizient ist. jeder teil der nicht genutzt werden kann reduziert die effizienz.

Re: RS: Blatt 7 - Aufgabe 8 2007-02-18 15:34
TriPhoenix
Danke für die schnelle Anwort!
Leider erschließt sich mir nicht, wie man daraus einen Effizienzberlust ableitet.
Die Zahlen 1-5 stehen jeweils für die "Einzelteile" eines Befehls, oder?

Für die Befehle, die Schritte der Abarbeitung gehen von links nach rechts. Der Effizienzverlust ergibt sich aus den Bildern so:

Im ersten Beispiel hast du 5 Befehle abgearbeitet, dazu aber 9 Takte gebraucht. Also hast du 4 von 9 Takten "verschwendet" und damit 4/9 oder 44,4% Verlust.

Im zweiten Beispiel sind es 14 Takte für 5 Befehle. Das macht 9 davon "umsonst" und damit einen Verlust von 9/14 also 64,3% Prozent

Re: RS: Blatt 7 - Aufgabe 8 2007-02-18 15:56
Anonymer User
Ok, das leuchtet mir soweit ein - aber wo wird da berücksichtigt, dass jeder fünfte Befehl ein Sprungbefehl ist?

Re: RS: Blatt 7 - Aufgabe 8 2007-02-18 16:27
TriPhoenix
Ok, das leuchtet mir soweit ein - aber wo wird da berücksichtigt, dass jeder fünfte Befehl ein Sprungbefehl ist?

Dadurch, dass der sechste Befehl wartet, bis der fünfte durch ist (deswegen "guckt" der in der letzten Zeile noch rein). Aber eigentlich ist die Aufgabenstellung da fast etwas anders auszulegen (würde ich zumindest). Wenn jeder fünfte Befehle in Sprungbefehl ist, dann also z.B. Befehl Nr. 1, 6, 11, …

Jetzt kommt dazu aber noch
die Pipeline zu Beginn jeden Sprungbefehls wartet bis alle vorhergehenden Befehle abgearbeitet sind
Das hieße also für die Beispiele unten, dass der Sprungbefehl die Befehle mit der Nummer 1, 6, 11, … sein müssten, denn vor diesen wird ja immer gewartet, bis die Pipeline wieder "leer" ist.

Jetzt ist noch die Frage, ob man zu Beginn eines Sprungbefehls schon weiß, wie es weitergeht, oder nicht. Wenn man es nämlich nicht weiß und mit der Weiterverarbeitung nach dem Sprungbefehl auch noch warten muss, bis der Sprung durch ist, ergibt sich ein anderes Bild, beispielhaft mit der 5er-Pipeline (ich habe hier Befehl 5, 10, 15, … als Sprungbefehl ausgewähl):

1 | 1 # # # # 2 | 2 1 # # # 3 | 3 2 1 # # 4 | 4 3 2 1 # 5 | # 4 3 2 1 6 | # # 4 3 2 7 | # # # 4 3 8 | # # # # 4 9 | 5 # # # # 10 | # 5 # # # 11 | # # 5 # # 12 | # # # 5 # 13 | # # # # 5 ---------------- 14 | 6 # # # # 15 | 7 6 # # # 16 | 8 7 6 # # 17 | 9 8 7 6 # 18 | # 9 8 7 6 19 | # # 9 8 7 20 | # # # 9 8 21 | # # # # 9 22 | 0 # # # # 23 | # 0 # # # 24 | # # 0 # # 25 | # # # 0 # 26 | # # # # 0 ----------------
Das wären dann wie man sieht in einem fortlaunden Schema immer 5 Befehle in 13 Takten, also wären 8 Takte "umsonst" gewesen (theoretisch wäre Platz für 8 weitere Befehle gewesen), macht 8/13 = 61,5% Verlust.

Welches von beiden Ergebnissen nun stimmt ist meiner Meinung nach Auslegungssache der Aufgabenstellung. In Klausuren würde ich übrigens schnell drüberschreiben, dass ich es nicht deutlich fand und daher von diesem und jenem ausgegangen bin. Hat man dann nämlich was falsches angenommen, ist die Annahme zwar falsch, aber nicht die ganze Lösung.

Re: RS: Blatt 7 - Aufgabe 8 2007-02-18 16:28
f0k
Ok, das leuchtet mir soweit ein - aber wo wird da berücksichtigt, dass jeder fünfte Befehl ein Sprungbefehl ist?
Geh mal die Tabelle so von oben nach unten durch. Im ersten Takt wird der erste Befehl angefangen (er betritt quasi die erste Stufe der Pipeline). Im zweiten Takt wird der zweite Befehl angefangen, der erste Befehl befindet sich bereits in der zweiten Stufe. … Im fünften Takt wird der fünfte Befehl angefangen. Es handelt sich dabei um einen (vermutlich bedingten? Oder ist das egal?) Sprungbefehl, deshalb kann im 6. Takt noch nicht der 6. Befehl ausgeführt werden - es müssen erst Befehle 1 bis 5 durch die Pipeline rauschen (wenn es ein bedingter Sprung ist, ist das ziemlich einleuchtend, denn die Bedingung kann erst geprüft werden, wenn Befehl 5 durch ist - wenn es kein bedingter Sprung ist, muss jemand anders mit weiteren Architekturdetails aufwarten). Befehl 6 kann dann erst im 10. bzw. 15. Takt begonnen werden.

Man geht jetzt davon aus, dass die Folge 6,7,8,9,10 genau so abgearbeitet wird wie die davor, also Befehl 10 ist wieder ein Sprungbefehl usw., darum kann man den Verlust für alles zusammen ausrechnen, indem man ihn nur für die ersten fünf Befehle bestimmt.

/edit: Zu langsam. Ich hab's ja fast erwartet.

Re: RS: Blatt 7 - Aufgabe 8 2007-02-18 16:37
T
Welches von beiden Ergebnissen nun stimmt ist meiner Meinung nach Auslegungssache der Aufgabenstellung.
deswegen schrieb ich:
so hat herr lehmann das in der vorlesung erklaert.

Re: RS: Blatt 7 - Aufgabe 8 2007-02-18 16:43
Anonymer User
danke, das hat mir echt geholfen!!

Re: RS: Blatt 7 - Aufgabe 8 2007-02-20 13:24
Anonymer User
Sehe ich das richtig, dass die Zahlen 1-5 jeweils für einen Befehl stehen (Befehle: 1,2,3,4,5)?
Also 1_1, 1_2, 1_3, 1_4, 1_5, wobei _X heißt, dass sich dieser Teil des ersten Befehls in der Xten Stufe befindet?