Warum sind die X3D Modelle schneller in Spielen?

Mortadello

Cadet 3rd Year
Registriert
Mai 2024
Beiträge
43
Was steckt denn technisch dahinter? Warum die 3DX Modelle im Spiel schneller sind, Anwendungen nicht?

Ist denn da der Unterschied zwischen einem Spiel und einer Anwendung?
Beides sind ja doch irgendwie nur Computercodes.
 
Das sind eben unterschiede beim Ram zugriff. Braucht die CPU ständig neue Daten aus dem Ram hilft der große Cache in der CPU nicht. Sind es immer wieder viele gleiche Daten kann der Cache das ganze sehr stark beschleunigen.

Wobei das ja auch keine harte Linie zwischen Spielen und Anwendungen ist. Manche Anwendungen können ebenso profitieren und in manchen Spielen bringt der Cache nicht so viel.

Edit: Und es gibt ja deshalb sogar Server CPUs, AMD EPYC 7003, mit 3D Cache, weil eben doch manche Anwendungen profitieren.
 
  • Gefällt mir
Reaktionen: aragorn92, Baal Netbeck und v3locite
Mortadello schrieb:
Warum die 3DX Modelle im Spiel schneller sind, Anwendungen nicht?
Es gibt sehr wohl auch Anwendungen, die Cachesensitiv bzw Speicherbandbreitenbegrenzt sind.
Alles, was viele Speicherzugriffe auf einen überschaubaren Datensatz benötigt, profitiert vom Cache.
Spiele gehören eben dazu. Übrigens bei weitem nicht alle Spiele, aber die meisten.
 
  • Gefällt mir
Reaktionen: aragorn92 und v3locite
Es gibt nicht die pauschale Aussage "Spiele sind schneller, Anwendungen nicht".
Lies dazu einfach den zweiteiligen Test bei Igorslab.de
Manche Spiele sind deutlich schneller, ebenso manche Anwendungen, manche nicht.
 
  • Gefällt mir
Reaktionen: aragorn92 und PeterSchmidt_80
Wie schon geschrieben ist der Cache. Wenn die gleichen Daten wieder geladen werden kommen die aus den Cache. Bei Anwendungen ist das leider nicht so.
 
  • Gefällt mir
Reaktionen: aragorn92
Mortadello schrieb:
Beides sind ja doch irgendwie nur Computercodes.
Am Ende sind alles nur Nullen und Einsen; aber ganz so simpel ist es dann doch nicht.

Es gibt Anwendungen, die brauchen überhaupt keinen Cache sondern primär nur Rohleistung. So z.B. Prime, Cinebench und Co. Da zählt allein der CoreCount der CPU, die IPC und der Takt. Cache ist fast gänzlich uninteressant.

In Spielen sieht es völlig anders aus. Ständig wiederkehrende Daten werden im Cache gelagert und müssen nicht aus dem langsamen RAM geladen werden. Kaum ein Spiel kann überhaupt mehr als 8 Threads ansprechen; somit ist alles oberhalb von 8 Kernen in den allermeisten Fällen auch absolut sinnlos. Dafür braucht es aber viel Cache und IPC um gut zu performen.
 
  • Gefällt mir
Reaktionen: aragorn92
da könnte man sich einfach mal die Artikel und Tests zur Einführung der ersten X3D Modelle angucken...

https://www.computerbase.de/2022-04...st/#abschnitt_das_ist_der_amd_ryzen_7_5800x3d
und da weiter zu

Der zusätzliche L3-Cache im Detail​

Doch auf der Gegenseite stehen die viel größeren Boni, die später in Benchmarks deutlich werden. Denn ein 96 MByte großer L3-Cache kann nun viel mehr Daten ganz nahe an der CPU vorhalten und muss sie nicht in den vergleichsweise noch viel langsameren RAM über einen ebenfalls vergleichsweise sehr langen Weg auslagern. Das bringt am Ende nicht nur viel Leistung, sondern spart auch noch Energie.


Denn wo Daten über lange Wege bewegt werden müssen, muss immer viel Energie aufgewendet werden. Jeder Datensatz, der am Ende nicht den Umweg über den RAM geht, spart – je nachdem, wo die Daten liegen – 60 bis 90 ns ein. Genau auf diesen Umstand reagieren Spiele extrem gut: 40 Prozent konnte die Redaktion in nicht nur einem Titel, sondern auch auf verschiedenen Plattformen ermitteln.
 
  • Gefällt mir
Reaktionen: AwesomSTUFF, frazzlerunning und Aduasen
Mortadello schrieb:
Was steckt denn technisch dahinter? Warum die 3DX Modelle im Spiel schneller sind, Anwendungen nicht?

Ist denn da der Unterschied zwischen einem Spiel und einer Anwendung?
Beides sind ja doch irgendwie nur Computercodes.
Falls es um X3D Prozessoren geht:

Computespiele haben zeitkritische Berechnungen. D.h ein Frame (ein Bild) auf deinem Monitor kann erst erzeugt werden, wenn die CPU alle anderen Komponenten in deinem PC bedient hat, allem vorran die GPU.

Prozessoren sind eigentlich recht dumm, und berechnen nur das, was sie gefragt werden und verwerfen alle Ergebnisse danach. Hier kommt der Cache und die Sprungvorhersage ins Spiel. Der Cache sorgt dafür, dass Daten nach einer Berechnung weiter vorgehalten werden. Die Sprungvorhersage ermittelt, wie wahrscheinlich eine bestimmte Berechnung auftreten kann. So kann der Prozessor entscheiden, welche Daten vorgehalten werden sollen.

Jetzt kommen die X3D Prozessoren ins Spiel, die einen extrem großen L3 Cache haben. Der Prozessor behält so die Ergebnisse vieler Berechnungen im Zwischenspeicher. Als Folge treten 3 Effekte auf
  • Kürzere Antwortzeiten bei Berechnungen, weil die Ergebnisse schon vorhanden sind
  • Einfachere Sprungvorhersage
  • Weniger CPU-Zeit für Berechnungen, dadurch geringe CPU-Last

Das führt in Summe dazu, dass zeitkritische Datenpakete rechtzeitig ankommen.
Bei Applikationen sind Prozesse nicht zeitkritisch, sondern werden in eine Warteschlange gepackt und der Reihe nach abgearbeitet. Die Prozesse sind meist identisch in der Art der Berechnung, sodass ein kleiner Cache ausreichend ist.
 
  • Gefällt mir
Reaktionen: Stan Marsh, aragorn92 und Nihil Baxxter
Asghan schrieb:
Es gibt nicht die pauschale Aussage "Spiele sind schneller, Anwendungen nicht".
Und seit dem 9800X3D ist das auch nicht mehr zutreffend - der kann beides.

Simanova schrieb:
Prozessoren sind eigentlich recht dumm, und berechnen nur das, was sie gefragt werden und verwerfen alle Ergebnisse danach.
 
  • Gefällt mir
Reaktionen: Asghan
Technisch gesehen ist es einfach eine vergrößerung des Caches, ganz vereinfacht ausgedrückt ist es, als würdest du den Arbeitsspeicher deines PCs vergrößern.

Unter Windows sind es zBsp. DAW Anwendungen wie Reaper oder Ableton die den Cache ausnutzen können, und unter Linux können sie teils sogar mit den großen 12 und 16 Kern Modellen mithalten. https://www.phoronix.com/review/amd-ryzen-7-9800x3d-linux
 
  • Gefällt mir
Reaktionen: Asghan
kachiri schrieb:
Das ist Relativ.
Auch beim 9800X3D profitieren nicht alle Anwendungen von dem größeren L3 Cache.
Aber auch hier verweise ich wieder auf den Test bei Igoslab.
 
kachiri schrieb:
Und seit dem 9800X3D ist das auch nicht mehr zutreffend - der kann beides.
Was damit gemeint ist: Bei gleichem Takt (z.b 9700X vs 9800X3D) entsteht kein Nachteil durch den X3D Cache
 
  • Gefällt mir
Reaktionen: Araska und kachiri
Asghan schrieb:
Das ist Relativ.
Auch beim 9800X3D profitieren nicht alle Anwendungen von dem größeren L3 Cache.
Aber auch hier verweise ich wieder auf den Test bei Igoslab.
Darum geht es nicht.
Wenn wir uns den Vergleich 5800X3D vs 5800X oder auch den 7800X3D oder 7700X anschauen, dann war es bisher immer so, dass AMD bei den X3D-Modellen auf Takt verzichten musste, wodurch diese in Anwendungen meist langsamer waren, als die non-X3D-Modelle. Also in Anwendungen, wo der Cache keine Relevanz hat.
Mit dem 9800X3D ist das nicht mehr der Fall. Der verhält sich in diesen Anwendungen (dazu gehören eben auch diverse Spiele) jetzt genauso wie eine non-X3D-Variante in Bezug auf die Leistungsfähigkeit.
Der 9800X3D ist in allen Leistungsbelangen dem 9700X überlegen.

Um es kurz zu machen: Während bei Zen 3 (und Zen 4) beispielsweise CPUs ohne 3D-Cache in Anwendungen die vom Cache nicht profitieren schneller waren, ist das bei Zen 5 nicht mehr der Fall.
 
  • Gefällt mir
Reaktionen: AwesomSTUFF
  • Gefällt mir
Reaktionen: cbtaste420
kachiri schrieb:
Und seit dem 9800X3D ist das auch nicht mehr zutreffend - der kann beides.
Ich vergleiche nicht verschiedene X3D Generationen, sondern mit vs ohne X3D.
zB 9700X vs 9800X3D.
Ich will nur sagen, dass nicht alle Apps von mehr Cache profitieren, ganz einfach. Manchen bringt der größere L3 was, manchen nicht.

Und wieder verweise ich auf den Test bei Igor.
 
Es wurde ja schon geschrieben....es gilt nicht pauschal für alle Spiele und Anwendungen, aber die Unterscheidung ist schon überwiegend zutreffend.


Zum Cache und Arbeitsspeicher....mal grobe Beispiele von AM4 AMD CPUs...nach meinem Wissensstand zu den Thema:

L1 Cache ist winzig aber die 1ns Reaktionszeit ist ausreichend, um zwischen dem Zeitpunkt wo Daten angefragt werden und wenn sie in der Pipeline gebraucht werden, zu liefern, so dass es nicht zum Stillstand der Pipeline kommt.
L2 Cache ist mit ca. 3ns nicht immer ausreichend schnell, aber er enthält alles was der L1 Cache hat + ältere Daten, oder Daten die nicht in L1 gepasst haben.
L3 Cache. Hier wird hineingeschoben, was aus den L2 Caches verdrängt wird oder für diesen zu groß ist und Daten bleibt aufgrund der Größe deutlich länger "am leben". Mit ca. 9ns Antwortzeit ist er aber auch träger...dafür teilen sich mehrere Kerne den L3 Cache und das kann helfen wenn mehrere Threads an den gleiche Daten arbeiten.
Und der Arbeitsspeicher hat je nach Geschwindigkeit zwischen 60 und 100 ns Reaktionszeit und ist damit viel langsamer als der Cache.

Typische Spiele haben zwei Eigenarten, die Anwendungen meist nicht haben.
1. Chronologie und Synchronisation sind wichtig.
2. Es passieren die verschiedensten Dinge und das schwer vorhersagbar.

Ein CPU-Render-Benchmark wie Cinebench macht für jeden CPU Thread einen Programm Thread auf und gibt ihm eine Kachel des Bildes zum bearbeiten. Der Thread hat dann einen eingeschränkten Satz an Daten die er für die Berechnung baucht und die meist im L2 Cache Platz finden und muss sich mit keinem anderen Thread abstimmen. Er kann ungestört bis zum Ende rechnen...gibt das Ergebnis ab und fertig....es können fast beliebig viele CPU Threads mit Arbeit versorgt werden.

Eine Tabellenkalkulation/Datenverarbeitung hat mit abertausenden Einträgen und Berechnungen ebenfalls viel Arbeit für die CPU, aber es ist einfach vorherzusehen, was als nächstes an Daten benötigt wird.
Wenn ein CPU Kern die Aufgabe bekommt C[0] = A[0] + B[0] zu berechnen und dafür bei der Speicherverwaltung A[0] und B[0] anfragt, dann geht diese hin und fragt vom Arbeitsspeicher z.B. direkt A[0-63] und B[0-63] an. Für die erste Berechnung muss dann zwar z.B. 80 ns gewartet werden, bis es losgehen kann, aber mit großer Wahrscheinlichkeit ist die nächte Berechnung C[1] = A[1] + B[1] und die übernächste C[2] = A[2] + B[2]....deren Daten liegen jetzt schon im L1 Cache und die CPU kann ohne Wartezeit weiter rechnen.
Das ist jetzt der simpelste Fall für die Sprungvorhersage und diese kann noch deutlich kompliziertere Vorhersagen machen um den L1 Cache mit Daten zu füllen, bevor diese benötigt werden....es sollte aber als Beispiel genügen um zu zeigen, warum der L3 Cache in Anwendungen meist gar nicht benötigt wird und auch die Arbeitsspeicher Geschwindigkeit selten einen Einfluss hat.

Im Kontext von Spielen scheitert sowohl die Aufteilung auf beliebig viele CPU Threads, als auch die Sprungvorhersage, die Daten vorsorglich in den L1 Cache platziert.
Natürlich werden auch hier möglichst viele Arbeiten auf neue Threads aufgeteilt, aber das sind selten große zusammenhängende Berechnungen, die lange dauern und unabhängig sind. Stattdessen sind es eher kleine Aufgaben, bei denen das Erzeugen und Zusammenführen des neuen Threads einen entscheidenden Teil der Berechnungszeit ausmacht. Die Threads müssen immer wieder zusammengeführt werden, um das Spiel synchron und chronologisch zu halten. Viele Variablen werden von verschiedensten Funktionen verwendet und vor jeder Änderung muss die Variable für alle anderen Threads gesperrt werden und danach wieder freigeben werden. Das erfordert viel "core to core Kommunikation" und macht noch mehr Programm Threads, die noch öfter Variablen schreiben, immer ineffizienter.

Es werden verschiedenste Aufgaben bunt durcheinander gewürfelt...von KI-Entscheidungen, Lebenspunkten, Kämpfen, Wegfindung, usw. bis zu Drawcalls um die GPU zu füttern.
Das macht es für die Sprungvorhersage extrem schwer und es gibt viel viel mehr zeitkritische Arbeitsspeicherzugriffe.
Ein großer L3 Cache vergrößert die Chance, dass diese zufälligen Arbeitsspeicher Zugriffe abgefangen werden können und die CPU Pipeline z.B. nur 9 statt 90 ns stillsteht.

In Summe kann das dann z.B. auch 50-70% mehr FPS im CPU Limit bedeuten....oder nur 10%....oder auch gar kein Vorteil, wobei dass dann schon ein sehr spezielles Spiel sein müsste, dass durch eine spezielle Berechnung limitiert ist...und diese Berechnung perfekt vorhergesagt werden kann...gleicher Takt und Architektur vorausgesetzt. ;)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Stan Marsh, coxon, Zwirbelkatz und eine weitere Person
Asghan schrieb:
Und wieder verweise ich auf den Test bei Igor.
Was anderes schreibe ich doch gar nicht, da brauchen wir auch nicht den Test von Igor. Das sieht man in jeden Test und ist ja auch keine Neuigkeit.
Mir geht es allein darum, dass ein 9800X3D auch, wenn der Cache nicht zündet, schneller ist als ein 9700X, was in den vorherigen Generationen eben nicht der Fall war. Der 5800X3D war in Anwendungen, wo der Cache nicht zündet, langsamer als der 5800X. Der 7800X3D langsamer als der 7700X.
 
  • Gefällt mir
Reaktionen: Zwirbelkatz, Baal Netbeck und Asghan
Zurück
Oben