Allgemeine Frage zur Core Auslastung bei Intel Prozessoren

jarobmar

Banned
Registriert
Nov. 2017
Beiträge
71
Guten Abend.

Es würde mich schon sehr interessieren, wie genau die Leistungsverteilung bei der i5 und i7 genau funktionieren.

Während ich Videos render oder spiele, ist mir oft aufgefallen, dass bei meiner i54670@4,4 Ghz während der Auslastung zuerst ein Kern zu 100 % belastet wird, während die anderen Kerne bei ca. 30 - 40 % sind. Je mehr die CPU Belastung steigt, desto mehr werden natürlich auch die anderen Kerne belastet, sprich dann der zweite zu 100 %, usw. usw.

Bei meinem i7 7700k@4,6 Ghz verteilt sich die Last gleichmäßig, sprich die Last wird unter den Kernen verteilt.

Ist das Ganze Hardware, OC, oder Software abhängig ? Könnt ihr genaueres dazu sagen bzw. mir Lesestoff empfehlen ?

FPS Unterschiede konnte ich keine Ausmachen. Sowohl beim ersten als auch beim zweiten System laufen die Benchmarks & Spiele flüssig.

Gruß
 
Das hängt von sehr vielen Faktoren ab.

Wenn die Software nicht parallelisierbar ist, dann belegt sie nur einen Kern. Wenn die Software zwischendurch auf die Festplatte zugreifen muss, dann wird in dieser Zeit (für gewöhnlich) die CPU nicht belastet. In Zeiten von SSDs geht die Auslastung dann nicht auf 0, weil der Zugriff zu schnell geht. Dafür sieht man dann halt sowas wie 50% Auslastung. Die Auslastungsanzeige zeigt ja immer nur einen Mittelwert der letzten x Sekunden an und keine Live Daten.

Dazu kommt noch, dass Software auf mehreren Threads unterschiedliche Dinge ausführt. Ein Spiel wird z.B. auf einem Thread die Eingaben verarbeiten, auf einem anderen die Physik berechnen und wieder einen anderen für Audio verwenden. Schon kann man 3 Kerne auslasten. Aber alle unterschiedlich stark, weil jede dieser Aufgaben unterschiedlich anspruchsvoll ist. Manche der Aufgaben (wie z.B. Physik) sind extrem gut parallelisierbar und können auch gleichzeitig auf mehreren Kernen bearbeitet werden.

Dazu kommt dann das Betriebssystem, das (zumindest theoretisch) bestimmt wie oft die CPU die Threads wechselt und wie (und mit was) die Kerne ausgelastet werden.

Die CPUs sind aber inzwischen so komplex und ausgefuchst, dass sie selbst entscheiden welchen Code sie wann und wie und wo ausführen, um eine optimale Auslastung zu erhalten. Ein Prozessor kann mehrere Operationen gleichzeitig auf einem Kern in einem einzelnen Takt ausführen - vor allem wenn es einfache Operationen wie Load oder Add sind. Andere komplexe Operationen können nur einzeln ausgeführt werden. Die CPU analysiert den auszuführenden Code und ordnet die Befehle um, um das möglichst viel in möglichst wenig Zeit zu berechnen (Google: Out Of Order). Zusätzlich pokert die CPU relativ viel und oft, es werden Vorhersagen gemacht und Daten geladen, die hoffentlich (aber nicht unbedingt) gleich gebraucht werden. Das kann natürlich auch nach hinten losgehen, aber meistens wirkt es sich positiv aus (Google: Branch Prediction).

Und ganz allgemein wechselt eine CPU (je nach CPU und Einstellungen und Betriebssystem) alle paar Millisekunden den aktuell zu bearbeitenden Thread, damit die Illusion entsteht, dass alles gleichzeitig berechnet wird und sich das System responsiv anfühlt. Jeder Threadwechsel kostet Zeit und bringt die Berechnungen nicht voran. Daher wechseln Server Systeme für gewöhnlich seltener die Threads, weil kein Benutzer davor sitzt der erwartet dass sich der Mauszeiger immer flüssig bewegen lässt. Um die Threadwechsel zu beschleunigen wurde Hyperthreading geschaffen. Dabei wird im Hintergrund der nächste Thread schon soweit vorbereitet, dass die CPU beim Wechsel keine (bzw. viel kürzere) Pausen mehr einlegen muss.

Und nicht zu vergessen die Stromsparfunktionen, die zusammen von Betriebssystem und CPU gesteuert werden. Ein Kern mit 800MHz berechnet bei 100% Auslastung so viel wie ein 4GHz Kern bei 20% Auslastung.
 
Zuletzt bearbeitet:
Vielen Dank euch beiden und speziell benneque für die ausführliche Antwort.
 
Zurück
Oben