Shader-Cache: Definition und wie sie sich auf die Spieleleistung auswirkt

Viele Male werden Sie unter den temporären Dateien gesehen haben, aus denen gelöscht werden kann Windows oder um Platz zu gewinnen den sogenannten DirectX-Shader-Cache oder Shader-Cache. Wenn Sie sich jemals gefragt haben, woran das liegt und warum die Leistung der Spiele beim Löschen einbricht, müssen Sie diesen Artikel einfach lesen.

GPUs sind Prozessoren wie CPUs, aber sie unterscheiden sich darin, dass ihre Parallelität Thread-orientiert ist. Deshalb wird gesagt, dass ein Grafikprozessor vom TLP-Typ ist, während ein zentraler vom ILP-Typ ist. Hinzu kommt, dass sich die Ausführungsthreads im Graphen zwar nicht an den Prozessen, sondern an den grafischen Primitiven oder den Daten orientieren.

Shader-Cache

Mit anderen Worten, jedes Dreieck, Pixel oder Fragment hat sein eigenes Shader-Programm für jede Stufe der 3D-Pipeline. Die in einer Hochsprache geschrieben ist, zum Beispiel HLSL, wenn wir über DirectX sprechen, oder GLSL, wenn wir über OpenGL oder Vulkan sprechen. Obwohl es auch einige gibt, die nur für bestimmte Systeme gelten, wie z. B. das PSGL von SONY Playstation Konsolen. Nun, diese Programme müssen kompiliert und daher vom Quellcode an die Binärdatei übergeben werden.

Was ist Shader-Cache?

Shader-Cache-CoD

Das Problem tritt auf, wenn im Gegensatz zu CPUs, bei denen alle x86 sind, bei GPUs der Satz von Registern und Anweisungen nicht gemeinsam ist, nicht zwischen Marken, sondern auch zwischen Architekturen derselben Marke. Das bedeutet, dass der Code der Shader während des Spielens kompiliert werden muss, was zu Rucklern und Performance-Problemen führt. Daher wird die generierte Binärdatei in einer Datei gespeichert, die beim erneuten Laden des Spiels erneut auf den Videospeicher der Grafikkarte geladen wird, den wir als Shader-Cache oder Shader-Cache kennen.

Wenn wir also unsere Grafikkarte aktualisieren, müssen diese für jedes unserer Spiele neu generiert werden, wenn wir sie von der Festplatte löschen oder die SSD auch. Darüber hinaus ist dies einer der Gründe, warum es nicht gut ist, eine Grafikkarte zu beurteilen, wenn wir zum ersten Mal ein Spiel spielen. Vor allem, wenn wir ihre regelmäßige Leistung messen wollen.

VRAM nimmt auch Platz ein

Cache-Shader-Systemsteuerung NVIDIA

Das GPU Ihrer Grafikkarte greift nur auf das System zu RAM über die PCI-Express-Schnittstelle und unter Verwendung seiner DMA-Einheit, sodass der Shader-Cache zusammen mit den visuellen Informationen geladen wird, die zum Zusammensetzen der Szene von der Speichereinheit in den RAM und vom RAM in den Videospeicher erforderlich sind. Obwohl mit DirectStorage erwartet wird, dass die Grafikhardware direkt auf die SSD zugreifen kann, werden die Zugriffslatenz und das Problem der Abhängigkeit von der SSD reduziert CPU.

Viele Spiele sind gut entwickelt und der Shader-Cache nimmt wenig Platz ein, andere jedoch nicht so sehr und belegen am Ende eine große Menge an Grafikspeicher. Das heißt, wenn der Treiber oder das Spiel selbst ein Limit hat, stellen wir plötzlich fest, dass die neuen Zusammenstellungen die alten ersetzen und die anfänglichen Leistungsprobleme zurückkehren.

In jedem Fall müssen wir bedenken, dass das Rendern des aktuellen Frames bevorzugt wird, wenn das Spiel, das wir spielen, Speicherplatz im Video-RAM benötigt. Daher wird versucht, den vorübergehend im Systemspeicher gespeicherten Shader-Cache abzurufen. Denken Sie auch daran, dass die Dumps in die Speichereinheit kontinuierlich erstellt werden, da der Shader eines grafischen Primitivs einmal generiert wurde, es nicht notwendig ist, dies erneut zu tun.

Raytracing und der Shader-Cache

Beim Raytracing ist die am häufigsten gestellte Frage der GPU vom booleschen Typ. Schneidet dieser Strahl dieses Graph-Grundelement? Die Antwort ist nicht immer ja und daher gibt es eine Bedingung, die je nach den Umständen eintreten wird oder nicht. Wenn Sie diesen Shader zum ersten Mal ausführen, müssen Sie daher den Cache-Shader für alle möglichen Ergebnisse kompilieren und generieren.

Shader-Cache auf Konsolen

XSX-, XSS-, PS5-Konsolen

Eine Videospielkonsole wird immer die gleichen Komponenten haben, vom ersten Modell, das die Fabrik verlässt, bis zum letzten. Obwohl mehrere Jahre vergangen sind, werden sich seine Spezifikationen nicht ändern. Heute findet man zum Beispiel ältere Modelle als die älteste Grafikkarte. Eine Möglichkeit, die Hardware-Unveränderlichkeit auszunutzen, besteht darin, sogenannte Shader zu verwenden, die bereits in die Spielinstallation kompiliert sind. Das macht es unnötig, für jedes Spiel einen Shader-Cache zu generieren, ist aber auch ein zweischneidiges Schwert.

Wenn Sie beispielsweise eine leistungsstärkere und abwärtskompatible Konsole erstellen möchten, haben Sie die folgenden Optionen:

  • Exportieren Sie die ISA auf die GPU des neuen Systems, sodass sie als Obermenge der alten funktioniert. Dies ist, was AMD in der PlayStation 5- und Xbox-Serie mit RDNA 2-Architektur getan hat, um Spiele der vorherigen Generation, die für GCN entwickelt wurden, reibungslos auszuführen.
  • Integrieren Sie alle grafischen Schaltungen des vorherigen Systems in das neue System. Dies ist etwas, was Nintendo auf seinen Konsolen bis 3DS und SONY mit seiner zweiten PlayStation und einigen Modellen der dritten getan hat.

Auf der Emulatorebene werden in vielen Fällen die bereits kompilierten Shader genommen und der umgekehrte Prozess durchgeführt, indem ein Zwischencode generiert wird, der einen Shader-Cache generieren kann, der für die Arbeit mit Ihrer Grafikkarte generiert wird. Es ist jedoch keine exakte Wissenschaft und Sie können beim Ausführen der Spiele auf bestimmte grafische Störungen stoßen.

Optimierungen für GPU-Hersteller

Lovelace Hopper Organisation

Beide NVIDIA und AMD enthalten normalerweise Optimierungen in den neuesten Treibern für die schneidigstenRand Spiele. Dazu gehören nicht nur die optimalen Einstellungen für mehr Leistung, sondern auch der bereits optimierte Shader-Cache für jedes Spiel und bessere Specs als das Basisspiel. Und es ist so, dass beide Hersteller daran interessiert sind, dass ihre fortschrittlichste Grafikkarte die maximal mögliche Leistung im leistungsstärksten Spiel von allem, das es heute gibt, hat.

Diese überlassen also Geld den verschiedenen Entwicklungsstudios, die die Shader-Programme für bestimmte Grafikarchitekturen optimieren und einen Shader-Cache generieren, der besser funktioniert als der, der mit dem Basisspiel geliefert wird. Dies geschieht, um den Kauf neuer Modelle zu fördern und eine Programmveralterung zu schaffen, die für einen Konsumfluss erforderlich ist, der die Branche aufrechterhält. Aus diesem Grund haben viele Spiele mit kaum visuellen Änderungen gegenüber ihren vorherigen Raten eine schlechtere Leistung.