Rechenleistung

Neue Frage »

Auf diesen Beitrag antworten »
MRMad33 Rechenleistung

Hallo alle zusammen ,hat jemand tipps wie ich das bei der 1 berechnen kann?
 
Auf diesen Beitrag antworten »
as_string

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

Gruß
Marco
Auf diesen Beitrag antworten »
MrMad33

Nein es ist kein Code gegeben .

Weisst du wie ich das bei der 1 ) berechnen kann?
Auf diesen Beitrag antworten »
as_string

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
 
Auf diesen Beitrag antworten »
MRMad33

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

2)? Weisst du wie ich da rechnen muss?
Auf diesen Beitrag antworten »
as_string

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
Auf diesen Beitrag antworten »
as_string

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

Gruß
Marco
Auf diesen Beitrag antworten »
MrBad33

1)Soll ich alle Befehle addieren und durch 2 teilen ?
Auf diesen Beitrag antworten »
as_string

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
Auf diesen Beitrag antworten »
MrMad33

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

und das durch was teilen?
Auf diesen Beitrag antworten »
as_string

Durch die Gesamtzahl der Instruktionen.
Auf diesen Beitrag antworten »
MrMad33

Also durch 4 teilen ?
Auf diesen Beitrag antworten »
as_string

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
Auf diesen Beitrag antworten »
MRMad33

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 ?
Auf diesen Beitrag antworten »
as_string

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
Auf diesen Beitrag antworten »
MRMad33

Hast du jetzt auch paar Tipps für die 2)?

Alleine schaffe ich es wahrscheinlich nicht großes Grinsen
Auf diesen Beitrag antworten »
as_string

Du weißt ja jetzt, wieviele Takte er durchschnittlich für einen einzelnen Befehl benötigt. Außerdem ist eine Taktfrequenz angegeben. Aus den 50 MHz weißt Du also, dass in der Sekunde 50 Millionen Takte abgearbeitet werden.
Die Frage ist: Wieviele Befehle können in einer Sekunde ausgeführt werden? Probier mal selbst zu überlegen: Du weißt, wieviele Takte ein Befehl durchschnittlich benötigt und Du weißt wieviele Takte Du pro Sekunde zur Verfügung hast. Was musst Du also rechnen?

Gruß
Marco
 
Neue Frage »
Antworten »


Verwandte Themen