??? Justus Jonas schrieb:
...So weit so gut. Nur hat einer der Entwickler von PGR3 (XBOX 360) gesagt, das man schon die drei Cores benutze! Und das man natürlich mit der Zeit immer besser lerne jede Hardware zu nutzen. Dazu nannte er 10, 20 oder gar 50% Zuwachs an Leistung. Klar, diese Steigerungsraten sind nur so in den Raum geworfen, aber wenn er Recht hätte, wäre das für mich enttäuschend. Den das klingt für mich eher nach PS2 oder XBox 1.
Als Erklärung meinte jemand, das jeder Core vielleicht nur zu 20% genützt würde und somit noch genügend Spielraum für Verbesserung vorhanden sei. Kann man das so vermuten? Oder besagt die Tatsache, dass anscheinend schon drei Cores benutz werden, das die schlummernden Leistungsreserven doch nicht so grandios sind, wie manche es sich erwünschen?
Im Interview werden die genannten Prozentzahlen nur als Beispiel genannt. Man, bzw. der Interviewte weiß einfach nicht, wie weit man in ein bis zwei Jahren im Bereich Mulicore und Multithread Programmierung ist.
Ich halte es für recht unwahrscheinlich, dass z.B. PGR3 die X360 CPU schon so weit ausreizt. Das begründe ich natürlich nicht mit meiner Erfahrung, denn die habe ich nicht
sondern mit den vielen Artikeln, die sich mit der Problematik der Parallelprogrammierung befassen.
Mal ein kleines theoretisches Rechenbeispiel.
Nehmen wir mal die X360 CPU (Ich weiß, ist der PS3 Thread, aber läßt sich leichter mit rechnen)
Die X360 CPU hat drei identische Prozessorkerne. Jeder Kern kann dann noch zwei Programmierstränge (Threads) gleichzeitig bearbeiten.
Nutze ich nur einen Thread pro Core, kann ich diesen Core auch nur zu ungefähr 60% ausnutzen. Nutze ich beide, sind sagen wir mal 90-100% drin.
Dass nicht jeder Core 50% bringt liegt daran, dass ich ja nicht wirklich zwei komplett getrennte Recheneinheiten in diesem einem Kern habe sondern nur eine. Es existieren aber doppelte Teilbereiche der Recheneinheit, so dass die obige Rechnung ungefähr hinkommt.
Also
Nehmen wir weiter an, dass alle drei Cores zusammen 300% ausmachen.
Jetzt nutze ich nur einen Core und da auch nur einen Thread.
Folglich erhalte ich auch maximal 60% von 300%
Wären also auf 100% bezogen 20%. Verwirrt
Man kann also grob sagen, nutzt man wirklich nur einen Core und dort nur einen Thread, erhalte ich auch maximal 20 und nicht etwa 33% der Gesamtleistung der CPU.
Wenn ich alle drei Cores nutze aber dort auch immer nur einen Thread komme ich auf 180% Leistung von 300%. Also Normalisiert auf 100% habe ich die CPU zu 60% ausgenutzt.
Ich bezweifel, dass PGR3 mehr als drei Threads nutzt und diese voll auslastet.
Spekuliere ich also weiter.
PGR3 nutzt einen Hauptthread, der auch immer ausgelastet ist. Dann nutzt es einen Thread für diverse Physikberechnungen (80% der Threadleistung) und eine für Sound und anderes (50% der Threadleistung) wie gesagt, reine Spekulation.
Ergibt nach meiner Rechnung also 60% + 48%+ 30% = 138 % von 300%
Damit wären wir bei 46 % CPU Auslastung und es wäre noch eine Steigerung rein CPU mäßig von über 100% drin.
Und ich denke, dass ich da sogar noch recht großzügig bei der Bemessung der Rechenzeit war.
Wenn Du die Rechnung nicht ganz mitverfolgen konntest, was ich dir nicht übel nehme. (Würde die vermutlich auch nicht raffen bei einer so bescheuerten Erklärung
), dann nur so viel.
Es ist noch eine Menge drin, wenn Multicoreprogrammierung erst einmal Salonfähig geworden ist.