Warum sagen alle dass kaum Spiele mehrere Kerne benutzen?

...komplette Frage anzeigen

5 Antworten

Das stimmt größtenteils auch und ich vermute, dass deine Beobachtung falsch ist. :)

Der Kontextwechsel zwischen mehreren Prozessen bzw. Threads und die nötige Synchronisation ist verglichen mit irgendwelchen Berechnungen extrem schwergewichtig. (dauert gerne mal 100000 mal so lange, wie eine einfache Gleitpunkt-Addition)

Wenn dein Spiel mit 60 oder gar 144 FPS läuft, dann ist es sehr haarig diverse Berechnungen so zu implementieren, dass sie mit der Anzahl der Kerne skalieren. Das ist im Moment das mit Abstand größte Problem bei Spieleengines, aber z. B. bei der Unreal-Engine recht gut (wenn auch nicht optimal) gelöst.

Wenn dein Prozessmonitor dir also sagt, dass 8 Kerne benutzt werden, dann liegt das einfach nur daran, dass sich die Ausführung von vielleicht nur zwei oder gar einem einzigen Prozess relativ gleichmäßig auf die Kerne verteilt, und es dadurch so aussieht, als ob alle 8 Kerne beschäftigt sind.

Natürlich gibt es auch Spiele, die tatsächlich mehr als zwei oder (sowieso) einen einzigen Prozess ausführen, aber das Ganze ist ein relativ kompliziertes Thema.

Dass die Last bei nur einem einzigen Prozess zwischen verschiedenen Kernen hin und her springt, bzw. sich zeitlich aufteilt, ist normal. Das passiert auch bei Spielen, die nur einen Kern nutzen! :)

Dazu gehört ein gewisses Verständnis für die Geschichte von CPU's und Betriebssystemen. Schon der Z80 aus den 80er Jahren besitzt zwei!! Kerne, nur wusste man zu diesem Zeitpunkt noch nichts von Threads, Prozessen oder Tasks, konnte diese zwei Kerne höchstwahrscheinlich auch gar nicht nutzen, weil das damalige CPM-Betriebssystem auch auf der 8080-CPU von Intel lief und CPM weder Multitasking noch Multiusing kannten ...

Das heutige macOS Sierra, Windows 10 oder die vielen Linux-Varietäten zeigen im Hintergrund zahlreiche Prozesse und Tasks an, die damals undenkbar waren und heute selbstverständlich sind.

Die heutigen Compiler können inzwischen auch mehrere Threads und Kerne verwalten (lassen), doch wie dies im Detail erfolgt, bestimmt immer das jeweilige Betriebssystem!

Sowohl die Aktivitätsanzeige von macOS Sierra als auch der Task Manager von Windows zeigen diese zahlreichen, scheinbar gleichzeitig ablaufenden Prozesse eines Computers an, doch auf die einzelnen Kerne und deren Auslastung gehen die genannten Programme nicht ein! Die jeweils locker 50 ... 120 Hintergrundprozesse sollten einem dabei schon klar machen, dass es ein eher müsiges Unterfangen darstellt, sich diese Prozesse auch noch vereinzelt pro CPU-Kern darstellen zu lassen - auch wenn du nun wissen willst, wieviele Kerne der CPU dein Superspiel nutzt.

Schon der Z80 aus den 80er Jahren besitzt zwei!! Kerne, ...

Der Sinclair QL war zu dieser Zeit ebenfalls in der Lage, über ein eigenes Netzwerkprotokoll bis zu 64 Maschinen zusammen zu schließen, und parallel rechnen zu können. Für diese - wie man heute sagen würde - asynchronen bzw. verteilten Berechnungen hatte das damalige QL Basic alles nötige bereits eingebaut.

Leider konnten sich die Dinger aufgrund von einem Mangel an verfügbarer Anwendersoftware nicht so richtig durchsetzen, aber sie waren den damaligen C64 und Amigas technisch deutlich überlegen. (CPU-Design, grafische Oberfläche mit mehreren Fenstern, usw.)

Sehr schade, dass die ausgestorben sind und die hyperempfindlichen Magnetbändchen nicht gerade die optimalste Möglichkeit der Datenspeicherung darstellten.

0
@TeeTier
"Der Sinclair QL war zu dieser Zeit ebenfalls in der Lage, über ein eigenes Netzwerkprotokoll bis zu 64 Maschinen zusammen zu schließen, und parallel rechnen zu können."

Stimmt schon, aber hier geht es um CPU's mit mehreren Kernen!

Allerdings trauere ich den Motorola-Prozessoren hinterher, die den Intel-Prozzis bis zum ersten Pentium deutlich voraus waren. Danach machte man bei Motorola leider nicht mehr weiter.

Wenn ich so überlege, wie die Praxis mit den MMX- und SSEx-Befehlen aussieht, sind die eigentlich allesamt überflüssig! Selbst aktuellste Compiler dürften diese Befehle praktisch kaum einsetzen. Ansonsten müsste man bei einer 2-Kern-CPU einmal den FPU-Teil und beim zweiten Kern die MMX-Register nutzen.

Jedes Mal die Register umladen verlangsamt die Rechnungen. Außerdem geht das je nicht zu jedem Zeitpunkt, da die normalen Integerbefehle längst beendet sind während der FPU-Teil der CPU noch rechnet!

Ähnliches betrifft die BCD-Befehle, die ein Relikt der Computersteinzeit sind!

0

Man muss Programme extra so programmieren, dass sie mehrere Kerne nutzen. Praktisch ist dies jedoch schwer und man hat meist nur 1-2 aufwendige "Aufgaben" + halt ggf. kleinere "Tasks". So nutzt man meist halt nur wenige Kerne sinnvoll aus.

Das kann ich die nicht sagen aber fest steht das die mehrheit der spiele nur 4 kerne benutztかまてよるなねはや、わなきさやまた

Ja, aber viele sagen dass nur wenige spiele mehr als 2 kerne nutzen

0

Was möchtest Du wissen?