Es ist letzlich wohin die Reise gehen wird/muss: die Aufgaben der Engine in lauter kleine Aufgaben "zerteilen" und dann "verteilen". Dadurch profitiert man recht gleichmäßig mit jedem zusätzlichen Core. Das ist auch der Plan der Entwickler, nur lässt sich halt nicht alles "teilen" und parallelisieren. Daran wird also geforscht auf verschiedenen Ebenen auch weitab der Spielebranche und wir werden davon in ferner Zukunft auf Many Core Architekturen was sehen.
Aber bis dahin muss man sich mit einem Kompromiss rumschlagen, nämlich ,dass Aufgaben die immer in einem Main thread waren langsam rauslöst und "händisch" aufteilt auf die Cores - bis das halt irgendwann mal automatisch passiert. 20 Jahre? Hmm
Ich bin da auch bei dir. Die Frage ist in welche Richtung und wie sich das entwickelt. Ich glaube nicht, dass wir irgendwann Spiele haben werden, die 50 Kerne oder so supporten und damit skalieren das halte ich für unrealistisch ganz ehrlich gesagt. Kerne werden in Zukunft auch nicht das Allheilmittel sein. Ich denke wir werden bei 16 Threads oder etwas mehr stagnieren und man wird über die APIs und die Engines an sich ganz anders an die Sache rangehen müssen um die Performance noch zu steigern bei Spielen. Meiner Ansicht sehen wir die Entwicklung schon bei den Low-Level APIs wie DX12 und Vulcan, womit die CPU entlastet wird und grundsätzlich die Ressourcen viel direkter und effizienter angesprochen werden und der Code dafür aber komplizierter wird. Genau das ist auch der Grund wieso es kaum Vorteile bei DX12 Spielen gibt weil es sehr schwer ist.
Lower-Level Graphics API - What Does It Mean?
So lower-level API means just that driver could be smaller and simpler, while upper layers will have more responsibility of manually managing stuff instead of automatic facilities provided by the driver (for example, there is no more DISCARD or NOOVERWRITE flag when mapping a resource in DirectX 12). It also means API is again closer to the actual hardware. Thanks to all that, the usage of GPU can be optimized better by knowing all higher-level details about specific application on the engine level.
Mehr Kerne wäre so gesehen nur die Brechstangenmethode um mit einer High-Level API mehr Performance herauszuholen, dafür etwas einfacher im Code. So hab ich das bisher verstanden.
Low/High-Level – DGL Wiki
Mein Schluss daher: Wir werden mit Sicherheit eine Grenze erreichen bei der Kernskalierung einfach wegen dem Overhead und mit dem Code viel effizienter die Leistung der Hardware nutzen müssen. Das ist auch der Grund wieso ich und man generell immer beobachten kann, dass die CPU entlastet wird in guten DX12 Games aber die Leistung gleich bleibt oder dennoch steigt.
Für mich ist momentan absehbar, dass diese Grenze bei der Kernskalierung irgendwo bei 16 Threads liegen wird nach aktueller Prognose. Abschätzen kann man das aber vermutlich erst, wenn man eben mal effizient dahin entwickelt hat.
Wer Fehler findet, korrigiere mich bitte. Ich bin dabei das zu lernen und zu verstehen.
In Battlefield 1 kann man das ganz gut beobachten. Klar die Performance ist nicht so konstant und die Frametimes schlecht, aber ich habe eine mindestens 20%ige Senkung in der CPU-Last und dennoch bin ich immer im GPU-Limit, selbst in 720p und niedrigen Details. Bei Ultra und 1080p bin ich dann im Schnitt bei 50-60% Auslastung in Amiens, wo es sonst 80-100% sind. Man sieht also wohin es geht und CPU-Leistung wird in Zukunft nicht mehr so wichtig sein.