Niemand weiß genau, wie das dynamische Caching des M3 funktioniert, aber ich habe eine Theorie

Eine Folie aus einer Apple-Präsentation mit dem Titel „Dynamic Caching“.
Bild wird mit Genehmigung des Urheberrechtsinhabers verwendet

Während Apples „Scary Fast“-Event fiel mir eine Funktion wie keine andere ins Auge: Dynamic Caching. Wahrscheinlich hatte ich, wie die meisten Zuschauer der Präsentation, eine Reaktion: „Wie steigert die Speicherzuweisung die Leistung?“

Apple basierte bei der Einführung des neuen M3-Chips auf einer „Eckpfeiler“-Funktion, die es Dynamic Caching für die GPU nennt. Apples vereinfachte Erklärung macht nicht genau klar, was Dynamic Caching bewirkt, geschweige denn, wie es die Leistung der GPU auf dem M3 verbessert.

Ich habe mich eingehend mit typischen GPU-Architekturen befasst und einige direkte Fragen gesendet, um herauszufinden, was dynamisches Caching genau ist. Hier ist mein bestes Verständnis für die zweifellos technisch umfangreichste Funktion, die Apple jemals einer Marke zur Verfügung gestellt hat.

Was genau ist dynamisches Caching?

Apples M3-Chipfamilie.
Apfel

Dynamic Caching ist eine Funktion, die es M3-Chips ermöglicht, nur genau die Menge an Speicher zu nutzen, die eine bestimmte Aufgabe benötigt. So beschreibt Apple es in der offiziellen Pressemitteilung: „Dynamic Caching weist im Gegensatz zu herkömmlichen GPUs die Nutzung des lokalen Speichers in der Hardware in Echtzeit zu.“ Beim dynamischen Caching wird für jede Aufgabe nur genau die Menge an Speicher verwendet, die benötigt wird. Dies ist eine Branchenneuheit, für Entwickler transparent und der Grundstein der neuen GPU-Architektur. Es erhöht die durchschnittliche Auslastung der GPU drastisch, was die Leistung für die anspruchsvollsten Profi-Apps und -Spiele erheblich steigert.“

In typischer Apple-Manier werden viele technische Aspekte absichtlich ausgeblendet, um den Fokus auf das Ergebnis zu richten. Es ist gerade genug enthalten, um das Wesentliche zu verstehen, ohne das Geheimnis zu verraten oder das Publikum mit Fachjargon zu verwirren. Die allgemeine Erkenntnis scheint jedoch zu sein, dass dynamisches Caching der GPU eine effizientere Speicherzuweisung ermöglicht. Ganz einfach, oder? Nun ist immer noch nicht ganz klar, wie die Speicherzuweisung „die durchschnittliche Auslastung erhöht“ oder „die Leistung erheblich steigert“.

Um Dynamic Caching überhaupt zu verstehen, müssen wir einen Schritt zurückgehen und untersuchen, wie GPUs funktionieren. Im Gegensatz zu CPUs zeichnen sich GPUs durch die parallele Bewältigung großer Arbeitslasten aus. Diese Arbeitslasten werden Shader genannt, das sind die Programme, die die GPU ausführt. Um eine GPU effektiv zu nutzen, müssen Programme eine Menge Shader gleichzeitig ausführen. Sie möchten möglichst viele der verfügbaren Kerne nutzen.

Dies führt zu einem Effekt , den Nvidia „Tail“ nennt . Eine Menge Shader werden gleichzeitig ausgeführt, und dann sinkt die Auslastung, während mehr Shader zur Ausführung in Threads (oder genauer gesagt in Thread-Blöcken auf einer GPU) gesendet werden. Dieser Effekt spiegelte sich in der Präsentation von Apple wider, als dort Dynamic Caching erläutert wurde, da die GPU-Auslastung in die Höhe schoss, bevor sie ihren Tiefpunkt erreichte.

Zwei Diagramme, die die GPU-Auslastung nebeneinander zeigen.
Bild wird mit Genehmigung des Urheberrechtsinhabers verwendet

Wie wirkt sich das auf die Erinnerung aus? Funktionen auf Ihrer GPU lesen Anweisungen aus dem Speicher und schreiben die Ausgabe der Funktion in den Speicher. Viele Funktionen müssen während der Ausführung auch mehrmals auf den Speicher zugreifen. Im Gegensatz zu einer CPU, bei der die Speicherlatenz durch RAM und Cache aufgrund des geringen Niveaus paralleler Funktionen äußerst wichtig ist, lässt sich die Speicherlatenz auf einer GPU leichter verbergen. Dabei handelt es sich um hochgradig parallele Prozessoren. Wenn also einige Funktionen im Speicher herumwühlen, können andere ausgeführt werden.

Das funktioniert, wenn alle Shader einfach auszuführen sind, anspruchsvolle Arbeitslasten jedoch über sehr komplexe Shader verfügen. Wenn die Ausführung dieser Shader geplant ist, wird der für ihre Ausführung erforderliche Speicher zugewiesen, auch wenn er nicht benötigt wird. Die GPU verteilt viele ihrer Ressourcen auf eine komplexe Aufgabe, auch wenn diese Ressourcen verschwendet werden. Es scheint, dass Dynamic Caching Apples Versuch ist, die der GPU verfügbaren Ressourcen effektiver zu nutzen und sicherzustellen, dass diese komplexen Aufgaben nur das benötigen, was sie benötigen.

Dies sollte theoretisch die durchschnittliche Auslastung der GPU erhöhen, indem mehr Aufgaben gleichzeitig ausgeführt werden können, anstatt dass eine kleinere Menge anspruchsvoller Aufgaben alle der GPU zur Verfügung stehenden Ressourcen verschlingt. Apples Erklärung konzentriert sich zunächst auf den Speicher, was den Anschein erweckt, als ob allein die Speicherzuweisung die Leistung steigert. Nach meinem Verständnis scheint eine effiziente Zuweisung die gleichzeitige Ausführung von mehr Shadern zu ermöglichen, was dann zu einer höheren Auslastung und Leistung führen würde.

Verwendet vs. zugewiesen

Ein wichtiger Aspekt, der für das Verständnis meines Versuchs, dynamisches Caching zu erklären, von entscheidender Bedeutung ist, ist die Art und Weise, wie Shader verzweigt werden. Die von Ihrer GPU ausgeführten Programme sind nicht immer statisch. Sie können sich abhängig von unterschiedlichen Bedingungen ändern, was insbesondere bei großen, komplexen Shadern, wie sie für Raytracing erforderlich sind, der Fall ist. Diese bedingten Shader müssen Ressourcen für das schlimmstmögliche Szenario zuweisen, was bedeutet, dass einige Ressourcen verschwendet werden könnten.

So erklärt Unity in seiner Dokumentation dynamische Verzweigungs- Shader: „Für jede Art von dynamischer Verzweigung muss die GPU Registerraum für den schlimmsten Fall zuweisen.“ Wenn ein Zweig viel teurer ist als der andere, bedeutet dies, dass die GPU Registerplatz verschwendet. Dies kann dazu führen, dass das Shader-Programm weniger parallel aufgerufen wird, was die Leistung verringert.“

Es scheint, dass Apple mit dynamischem Caching auf diese Art der Verzweigung abzielt und es der GPU ermöglicht, nur die Ressourcen zu nutzen, die sie benötigt, anstatt sie zu verschwenden. Es ist möglich, dass die Funktion Auswirkungen auf andere Bereiche hat, aber es ist nicht klar, wo und wann Dynamic Caching einsetzt, während eine GPU ihre Aufgaben ausführt.

Immer noch eine Blackbox

Apple stellt auf einer Veranstaltung neue Macs vor.
Apfel

Natürlich muss ich anmerken, dass dies alles nur mein Verständnis ist, das sich aus der herkömmlichen Funktionsweise von GPUs und den offiziellen Angaben von Apple zusammensetzt. Apple wird vielleicht irgendwann mehr Informationen darüber veröffentlichen, wie das alles funktioniert, aber letztendlich spielen die technischen Details von Dynamic Caching keine Rolle, wenn Apple tatsächlich in der Lage ist, die GPU-Auslastung und -Leistung zu verbessern.

Letztendlich ist Dynamic Caching ein marktfähiger Begriff für eine Funktion, die tief in die Architektur einer GPU eindringt. Der Versuch, dies zu verstehen, ohne jemand zu sein, der GPUs entwickelt, wird unweigerlich zu Missverständnissen und reduzierenden Erklärungen führen. Theoretisch hätte Apple einfach auf das Branding verzichten und die Architektur für sich selbst sprechen lassen können.

Wenn Sie nach einem tieferen Einblick in die Wirkung von Dynamic Caching in der GPU des M3 suchen, haben Sie jetzt eine mögliche Erklärung. Wichtig ist jedoch die Leistung des Endprodukts, und wir müssen nicht lange warten, bis die ersten M3-Geräte von Apple für die Öffentlichkeit verfügbar sind, damit wir alle es herausfinden können. Aber basierend auf den Leistungsangaben und Demos, die wir bisher gesehen haben, sieht es auf jeden Fall vielversprechend aus.