Warum sind heutige CPUs mit vielen Kernen eigentlich nicht in der Lage, entsprechend nicht benötigte Kerne komplett zu deaktivieren?

Vissi schrieb:
Einige meinen ja hier, dass es im Idle kaum einen Unterschied macht.

Bei Beachtung des Themas in Bezug auf ein und die selbe CPU hat das auch kaum Auswirkungen.
 
Nilson schrieb:
Sieht man ja an Spielen, wie lange es da gedauert hat, dass mal 4 Threads von vielen Spielen wirklich benötigt werden.
Ein Thread für die Ki-Gegner, einer für die Physik, einer für die Eingaben,einer für Ton, einer .... und schon hat man locker 4 zusammen. Ich denke das Problem, liegt eher daran die Threads zu Syncen. Es gab ja schon fälle, wo Threadkonkurenzen zu menschlichen Schäden führten, weil man zu beginn von Multithread ja nicht so weit gedacht hat. Da frage ich mich immer wie die das Problem bei GPUs hinbekommen, mal eben 5000 Threadas zu syncen, das keiner dem anderen abhaut und alle annähernd gleich fertig sind für ein Frame.
Mehr sowas in die Richtung^^
 
Weil Pixel (bis zu einem gewissen grad) unabhängig voneinander sind bzw. nur vom Nachbar abhängen. Die Logik fürs verschränken der Parallelen Schritte ist also relativ simpel. Und wenn ein Pixel früher fertig sein sollte, liegt der halt solange im Speicher, bis alle Pixel fertig sind.
 
  • Gefällt mir
Reaktionen: JohnVescoya
Die Hauptverbraucher im Idle sind nicht die CPUs. Da können ein paar Watt gespart werden aber das restliche System braucht viel mehr.
Verschiedene Plattformen brauchen unterschiedlich viel, weil unterschiedlich viele Funktionen zur Verfügung gestellt werden. Plattformen/Mainboards für viele Kerne und damit viel maximalverbrauch, haben in der Regel eine Spannungsversorgung, die mit ihrer Effizienz nicht auf Idle ausgelegt ist sondern darauf bei vollast nicht zu überhitzen.

Und wie schon gesagt wurde, ist die Situation bei GPUs, nicht so, dass alle Prozessoren an einer Aufgabe arbeiten sondern jeder macht seinen eigenen Krams. Da müssen ja vor allem tausende dreieckige Flächen aus ihren Positionen in der 3D Welt auf die Monitorebene projeziert werden. Vorher mussten da noch Texturen drüber gelegt werden. Da rechnet jeder Prozessor für sich und am Ende wird alles addiert. Und nachher müssen noch andere Prozessoren der CPU in der Nachbearbeitung ran......aber eigentlich läuft alles parallel und nacheinander und nicht zusammen.

Die CPUs können das auch. Wenn man sich Videobearbeitung oder Raytracing anguckt, dann berechnet eben jeder CPU Kern einen Bereich des Bildes und am Ende wird zusammengefügt.
Cinebench skaliert ja praktisch Perfekt mit mehr CPU Kernen.

Was nur schwer geht sind PC Spiele.

Da muss das Spielgeschenen in Echtzeit aktuell bleiben. Die meiste Arbeit, die man auslagert, muss wieder mit dem Rest zusammengeführt und synchronisiert werden.
Was der Spieler macht, was die KI macht und was die Physik macht, muss immer wieder synchronisiert werden und das bedeutet viel Kommunikation zwischen den CPU Kernen. Und in der Regel viele Wechsel im Cache und viele kleine Ram Zugriffe.
Bei klassischer DX11 Programmierung, wird ein CPU Thread damit beauftragt die Arbeit zu verteilen und wieder zusammenzuführen sowie die Drawcalls abzuarbeiten und den GPU Treiber zu füttern.
Gerade mit sehr vielen Objekten im Spiel werden die Drawcalls immer aufwendiger und egal wie viel des Spielgeschehens auf andere Kerne ausgelagert wird, irgendwann lohnt es sich gar nicht mehr, weil das Organisieren mehr Rechenzeit benötigt als die eigentlichen Berechnungen.
Und die Drawcalls sind mit mehr Objekten mehr Arbeit.

Und dann hängt man im CPU limit weil ein CPU Kern überlastet ist.

Nvidia mit ihrem halben softwaresheduler trickst da etwas rum und lässt die Drawcalls auf anderen CPU Threads berechnen.
AMD GPUs haben sich da in eine unflexible Sackgasse manövriert, wo der Hardware Sheduler das standardverfahren erzwingt(Zumindest ist das die allgemeine Erklärung, die man so findet)

low level APIs zeigen, dass es auch anders geht und irgendwie alles beliebig verteilt werden kann. jeder sendet seine Infos einfach direkt an die GPU ohne zusammenzuführen und ohne Umweg über den Treiber.
Frag mich nicht wie, aber an Ashes of the Benchmark sieht man wie das funktionieren kann. Im DX12 CPU Benchmark wird meine 8 Kern 16 Thread CPU zu 80-90% ausgelastet...gleichmäßig über alle Threads.
Natürlich ist AotS auch ein Extrembeispiel, wo unsinnig viele Objekte und Effekte benutzt werden um die CPU Last hochzutreiben.
Aber mit der Technik wären so Spiele wie Supreme Comander oder Starcraft 2 plötzlich mit vielen 100 FPS möglich.
Shooter werden von sowas nicht so stark profitieren, aber wenn man dann anfängt mit den neuen Möglichkeiten eine weiter zerstörbare Umgebung oder so umzusetzen, dann sehe ich da noch viel Potential.


Aber egal ob high oder low level API. Gerade wenn viele CPU Kerne benutzt werden, ist der Bedarf an Kommunikation groß. Und um so mehr CPU Kerne, um so länger die Kommunikationswege.
Wenn genug für viele Kerne zu tun ist, dann ist es natürlich gut sie zu haben.
Besser als nur 4 oder weniger Kerne zu haben, die dann überlastet sind.

Aber gerade alte Spiele, die nur einen Kern unterstützen und deren Arbeit dann teilweise vom bescheuerten Windows 10 Scheduler von Thread zu Thread geschoben wird um eine gleichmäßige Auslastung aller Kerne zu erhalten, laufen dann auf vielen CPU Kernen eher bescheiden.
 
  • Gefällt mir
Reaktionen: Fragger911 und Markus700
Vissi schrieb:
Mal ganz abgesehen von Ryzen mit 16 Kernen, der im Idle-Modus 100% mehr aus der Steckdose zieht, als ein 4 oder 6 Kerner von Intel...

Das wundert mich.

Weil du CPU und Gesamtsystem verwechselst?

Cores versus Threads?

Die Wahl des Mainboards/Chipsatz kann sehr wohl eine Rolle spielen.

Habe den Eindruck du verwurschtest alles miteinander. Und der Sieger heisst Intel? ;)
 
Ich habe mir heute nochmal die Idle-Energie-Werte verschiedener Systeme angeschaut.

Ein i9-System mit 18 Kernen verbraucht im Idle 55 Watt, was zwar etwas mehr ist, als ein i7-System, aber relativ zu den einigen mehr vorhandenen Ausstattungsmerkmalen akzeptabel.

Als ich den Thread gestern eröffnet habe, habe ich schlicht weg das falsche Diagramm angeschaut.

Sorry dafür...
 
  • Gefällt mir
Reaktionen: Gentlem4n
Mein x58 System zieht im Idle ca. 140Watt, das x79 mit gleicher Kernzahl ca. 95W, während das z87 mit 2 cores weniger bei rund 60W liegt. Da ist schon einiges passiert und auch die Vergleiche mit noch größeren CPUs passen ja.
 
Vissi schrieb:
Als ich den Thread gestern eröffnet habe, habe ich schlicht weg das falsche Diagramm angeschaut.

Mit deinen Aussagen hast Du nur dargestellt, dass du von der grundlegenden Funktionsweise und dem Aufbau der Technik hier kein Verständnis hast. Ansonsten wäre die Erkenntnis darüber bei Betrachtung der von dir genannten Diagramme von allein gekommen.

Sorry dafür... (ach, eigentlich nicht, man muss das Kind ja beim Namen nennen)
 
Zurück
Oben