Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
--- Rechenleistung (http://www.informatikerboard.de/board/thread.php?threadid=3912)


Geschrieben von MRMad33 am 07.05.2018 um 21:06:

  Rechenleistung

Hallo alle zusammen ,hat jemand tipps wie ich das bei der 1 berechnen kann?



Geschrieben von as_string am 09.05.2018 um 08:04:

 

Da ist die Rede von einem Programmcode. Ist da nicht ein konkreter eventuell noch gegeben?

Gruß
Marco



Geschrieben von MrMad33 am 10.05.2018 um 17:58:

 

Nein es ist kein Code gegeben .

Weisst du wie ich das bei der 1 ) berechnen kann?



Geschrieben von as_string am 11.05.2018 um 08:57:

 

Ok, ich hatte die Tabelle nicht richtig angeschaut.
In der mittleren Spalte steht, wie häufig der entsprechende Befehlstypen ausgeführt wird. Du musst also nur einen gewichteten Mittelwert bilden.
Wenn Du die Anzahl aller Befehle ausrechnest, musst Du ja die Zahlen in der mittleren Spalte alle addieren. Wenn Du die Gesamtzahl der Cycles ausrechnen willst, musst Du eine Summe bilden über das Produkt aus jeweils der mittleren und der rechten Spalte.
Die Gesamtzahl der Cycles geteilt durch die Gesamtzahl der ausgeführten Befehle ist die durchschnittliche CPI-Rate.

Gruß
Marco



Geschrieben von MRMad33 am 11.05.2018 um 11:35:

 

Durschnitt : (50000+75000+10000+5000)/4 = 35000

2)? Weisst du wie ich da rechnen muss?



Geschrieben von as_string am 11.05.2018 um 14:08:

 

Diese Rechnung ist Unsinn. Du sollst nicht die durchschnittliche Anzahl von Befehlen je Kategorie ausrechnen, was sollte diese Zahl bringen?
Weißt Du, was CPI bedeutet?

Gruß
Marco



Geschrieben von as_string am 11.05.2018 um 14:33:

 

Hier eine Seite, die erklärt, wie man einen gewichteten Mittelwert ausrechnen kann:
https://de.wikihow.com/Einen-gewichteten-Mittelwert-berechnen
Dort dann besonders Teil 4 "Gewichtete Mittelwerte ohne Prozente" anschauen.

Gruß
Marco



Geschrieben von MrBad33 am 11.05.2018 um 19:07:

 

1)Soll ich alle Befehle addieren und durch 2 teilen ?



Geschrieben von as_string am 11.05.2018 um 19:37:

 

Zitat:
Original von MrBad33
1)Soll ich alle Befehle addieren und durch 2 teilen ?

Wie kommst Du denn darauf?
Also, ich versuchs etwas mehr zu erklären:
CPI heißt "cycles per instruction", also wieviele Takte für die Ausführung eines Befehls gebraucht werden. In der Tabelle werden 4 Befehlstypen unterschieden und die Anzahl der Takte für jeden Typ ist angegeben.
Außerdem wurde ein Beispielprogramm betrachtet und ausgezählt, wie häufig Befehle verwendet werden, die in die jeweilige Kategorie fallen.
Mal ein einfacheres Beispiel: Angenommen Du hättest nur zwei Typen von Befehlen, eine Art benötigt nur einen Takt zur Ausführung, die zweite Art allerdings 5.
Angenommen, vom ersten Typ werden 10 ausgeführt und vom zweiten nur 2. Dann brauchst Du ja insgesamt zur Ausführung des gesamten Programms (also 10 mal Typ 1 und zweimal Typ 2) dann einfach:
10 * 1 + 2 * 5 = 20
Also 20 Zyklen.
Wenn man eine mittlere CPI-Rate über das gesamte Programm hinweg berechnen will, muss man die Gesamtzahl der Zyklen (also die eben ausgerechnete 20) durch die Gesamtzahl der Instruktionen, hier also 10 plus 2 insgesamt 12 Instruktionen.
Der durchschnittliche Wert wären dann eben 20 (Gesamtzahl Zyklen) geteilt durch 12 (Gesamtzahl an Instruktionen), also 5/3.
Verstehst Du diese Rechnung? Wenn nein: Wo hängts? Wenn ja: Probiere dieselbe Rechnung mit den Werten aus der Aufgabe durchzuführen!

Gruß
Marco



Geschrieben von MrMad33 am 11.05.2018 um 23:23:

 

Durschnitt : (50000*2+75000+10000*4+5000*3)

und das durch was teilen?



Geschrieben von as_string am 12.05.2018 um 00:47:

 

Durch die Gesamtzahl der Instruktionen.



Geschrieben von MrMad33 am 12.05.2018 um 15:27:

 

Also durch 4 teilen ?



Geschrieben von as_string am 13.05.2018 um 00:08:

 

Nein: Wieviele Instruktionen hat das Programm? Wenn schon der erste Typ von Instruktionen 50.000 mal vorkommt...
Irgendwie habe ich den Eindruck, Du verstehst gar nicht, um was es geht.
Hier nochmal ein Erklärungsversuch:
Du hast ein Programm, das während seines Ablaufs verschiedene Instruktionen ausführt. Diese greifen z. B. auf den Hauptspeicher zu (Load/Store) und brauchen dafür jeweils 2 Takte, oder sie führen eine Ganzzahl-Rechnung in der ALU durch, so was geht recht schnell und es kann eine Rechnung pro Takt ausgeführt werden. Dann machen wieder andere Gleitkomma-Rechnungen, was recht aufwändig ist und deshalb 4 Takte benötigt. Außerdem muss das Programm auch häufiger Sprünge machen (z. B. bedingte Verzweigungen und so), was auch viel Zeit braucht, (häufig deshalb, weil die Pipeline verworfen werden muss).
Vom ersten Typ (Load/Store) führt das Beispielprogramm 50.000 Instruktionen in seinem Verlauf aus. Weil diese Instruktionen alle jeweils 2 Takte benötigen, brauchen alle 50.000 Instruktionen zusammen 100.000 Takte. Außerdem werden noch 75.000 ALU-Befehle ausgeführt, die jeweils nur einen Takt benötigen, also sind das insgesamt 75.000 Takte. Die 10.000 Gleitkomma-Befehle brauchten jeweils 4 Takte, also insgesamt 40.000 Takte. Sprünge sind es 5.000 mit jeweils 3 Takten, also 15.000 Takte.
Die erste Frage ist jetzt: Wieviele Takte werden durchschnittlich pro Instruktion gebraucht? Wenn die langsamsten Befehle 4 Takte brauchen, und die schnellsten einen Takt, dann muss das (gewichtete) Mittel ja irgendwo zwischen 1 und 4 liegen. Wenn das Programm häufiger schnelle Befehle ausführt, dann ist durchschnittlich auch die CPI-Rate niedriger und umgekehrt.

Was ist also die Gesamtzahl der Instruktionen im Programm? Wieviele Takte (Cycles) benötigt das Programm zur Ausführung? Letzteres durch ersteres geteilt ist die Antwort auf a).

Gruß
Marco



Geschrieben von MRMad33 am 13.05.2018 um 18:34:

 

Ich glaube ich verstehe dich jetzt:
Durschnitt : (50000*2+75000+10000*4+5000*3) /(50000+75000+10000+5000)


Das geht klar oder ?

Man könnte es ja auch einzeln für jedes so machen:

1 Fall : 50000*2/(50000) = .....


Aber beides geht oder ?



Geschrieben von as_string am 13.05.2018 um 22:30:

 

Zitat:
Original von MRMad33
Ich glaube ich verstehe dich jetzt:
Durschnitt : (50000*2+75000+10000*4+5000*3) /(50000+75000+10000+5000)


Das geht klar oder ?

Das sieht gut aus! Daumen hoch

Zitat:
Original von MRMad33
Man könnte es ja auch einzeln für jedes so machen:

1 Fall : 50000*2/(50000) = .....


Aber beides geht oder ?

Ich verstehe nicht so ganz, wie das gehen soll. Bei Deiner Rechnung kommt ja für den ersten Typ dann einfach 2 raus (die 50000 sind ja im Zähler wie im Nenner, also kürzen sie sich weg), genau so wie für die anderen Typen. Was hast Du dann gewonnen?
Der Witz bei dem gewichteten Mittel ist ja gerade, dass die CPI für die Befehlstypen, die häufiger verwendet werden, auch stärker gewichtet in den Mittelwert gehen.

Gruß
Marco


Forensoftware: Burning Board, entwickelt von WoltLab GmbH