Sie sind den Gerüchten gefolgt und haben den Hype ignoriert; du hast gewartet Bemerkungen und schaute sich alle Metriken an. Schließlich haben Sie Ihre Dollars geschlagen und sind mit einer der neuesten Grafikkarten von AMD oder Nvidia davongekommen. Darunter befindet sich eine riesige GPU mit Milliarden von Transistoren, die mit Taktraten laufen, die vor einem Jahrzehnt unvorstellbar waren.

Sie sind mit Ihrem Kauf wirklich zufrieden und Spiele haben nicht besser ausgesehen oder gespielt. Aber Sie fragen sich vielleicht, was genau Ihre neue Radeon antreibt. RX 5700 und wie anders auf einem chip GeForce RTX.

AMD vs Nvidia: Willkommen zum Architektur- und Funktionsvergleich der neuesten GPUs von Navi vs. Turing.

Moderne GPU-Anatomie

Bevor wir beginnen, gängige Chipstrukturen und -systeme aufzuschlüsseln, schauen wir uns das grundlegende Format an, dem alle modernen GPUs folgen. Zum größten Teil sind diese Prozessoren nur Gleitkomma-Rechner (FP); das heißt, sie führen mathematische Operationen mit Dezimal-/Bruchwerten durch. Daher sollte zumindest eine GPU eine Logikeinheit haben, die diesen Aufgaben gewidmet ist, und diese sind normalerweise FP-ALUs (Gleitkomma-Recheneinheiten) oder kurz FPUs. Nicht alle Berechnungen von GPUs sind in FP-Datenwerten, daher gibt es auch eine ALU für Integer (ganze Zahl) können mathematische Operationen oder dieselbe Einheit sein, die beide Datentypen verarbeitet.




Nun brauchen diese Logikeinheiten etwas, um sie zu organisieren, indem sie dekodiert und organisiert werden, um sie zu beschäftigen, und zwar in Form von mindestens einer speziellen Gruppe von Logikeinheiten. Im Gegensatz zu ALUs sind sie vom Endbenutzer nicht programmierbar; Stattdessen stellt der Hardwarehersteller sicher, dass dieser Prozess vollständig von der GPU und ihren Treibern verwaltet wird.



Es muss auch eine Art Speicherstruktur vorhanden sein, um diese Anweisungen und die zu verarbeitenden Daten zu speichern. Auf der einfachsten Ebene würde es zwei Formen annehmen: Zwischenspeicher und ein punkt lokaler Speicher. Der erste wird in die GPU eingebettet und SCHANDE. Diese Art von Speicher ist schnell, nimmt aber einen relativ großen Teil des Prozessorlayouts ein. lokaler Speicher THEATEREs ist etwas langsamer als SRAM und wird normalerweise nicht in die GPU gesteckt. Nativer Speicher bei den meisten Grafikkarten, die wir heute sehen DDR DRAM-Module.

Schließlich umfasst es zusätzliche Tuning-Aufgaben wie das Erstellen von 3D-Grafiken, das Erstellen von Dreiecken aus Scheitelpunkten, das Rastern des 3D-Frames, das Sampling und das Mischen von Texturen. Wie Befehls- und Steuergeräte sind diese feste Funktion in der Natur. Was sie tun und wie sie funktionieren, ist für Benutzer, die die GPU programmieren und verwenden, völlig transparent.




Lassen Sie uns das zusammensetzen und eine GPU erstellen:



Der orangefarbene Block ist die Einheit, die Texturen mit dem sogenannten . verarbeitet Textur-Mapping-Einheiten (TMU'lar) - TA Texturadressierung volume - erstellt Speicherorte für Cache und lokalen Speicher zur Verwendung - und TF Texturabruf sammelt die Texturwerte aus dem Speicher und aggregiert sie. TMUs sind heute bei allen Anbietern so ziemlich gleich, da sie mehrere Texturwerte pro GPU-Taktzyklus verarbeiten, abtasten und mischen können.




Der Block darunter schreibt die Farbwerte der Pixel in den Frame, backsampelt sie (PO) und mischt sie (PB); Dieser Block führt auch Operationen aus, die verwendet werden, wenn Anti-Aliasing angewendet wird. Name dieses Blocks: Ausgabeeinheit rendern or Backend erstellen create (kurz ROP/RB). Wie die TMU werden sie jetzt ziemlich zum Standard, wobei jeder bequem einige Pixel pro Taktzyklus handhabt.

Trotzdem wäre unsere Basis-GPU vor 13 Jahren selbst für Standards schrecklich gewesen. Warum das?

Es gibt nur eine FPU, TMU und ROP. Grafikprozessoren wie Nvidias GeForce 8800 GTX im Jahr 2006 hatten 128, 32 bzw. 24. Also lasst uns anfangen etwas dagegen zu tun....




Wie jeder gute Prozessorhersteller haben wir die GPU aktualisiert, indem wir einige weitere Einheiten hinzugefügt haben. Das bedeutet, dass der Chip mehrere Befehle gleichzeitig verarbeiten kann. Um dabei zu helfen, haben wir etwas mehr Cache hinzugefügt, diesmal jedoch direkt neben den Logikeinheiten. Je näher der Cache an einer Rechnerstruktur liegt, desto schneller kann er mit den ihm zugewiesenen Operationen initialisiert werden.

Das Problem mit unserem neuen Design ist, dass es immer noch nur einen Controller gibt, der unsere zusätzlichen ALUs verarbeitet. Es wäre besser, wenn wir mehr Unit-Blöcke hätten, die alle von ihren eigenen separaten Controllern verwaltet werden, denn das bedeutet, dass wir sehr unterschiedliche Operationen gleichzeitig ausführen können.

Das ist jetzt mehr! Einzelne ALU-Blöcke, die mit ihren eigenen TMUs und ROPs verpackt sind und von köstlich leckeren, schnellen Cache-Slices unterstützt werden. Es gibt immer noch nur einen von allem, aber der grundlegende Build ist keine Million Meilen von dem Grafikprozessor entfernt, den wir heute in Computern und Konsolen sehen.

Navi ve Turing: Godzilla GPU'ları

Nachdem wir nun das grundlegende Layout eines Grafikchips definiert haben, sind hier einige Bilder der tatsächlichen Chips, wenn auch leicht vergrößert und gerendert, um die verschiedenen Builds hervorzuheben, und Navi vs. Beginnen wir unseren Turing-Vergleich.

Auf der linken Seite befindet sich der neueste Prozessor von AMD. Das gesamte Chipdesign heißt Navi (manche nennen es Navi 10) und die Grafikarchitektur heißt RDNA. Rechts daneben steht Nvidias Full-Size-TU102-Prozessor mit neuester Turing-Architektur. Es ist wichtig zu beachten, dass diese Bilder nicht skaliert sind: Die Fläche des Navi-Musters beträgt 251 mm2, während die TU102 752 mm2 beträgt. Der Nvidia-Prozessor ist groß, aber nicht 8x größer als das AMD-Angebot!

Beide kolossal Transistorzahl (18,6 Milliarden gegenüber 10,3), aber der TU102 hat durchschnittlich ~25 Millionen Transistoren pro Quadratmillimeter, verglichen mit 41 Millionen pro Quadratmillimeter des Navis.

Dies liegt daran, dass beide Chips zwar von TSMC hergestellt werden, aber auf unterschiedlichen Prozessknoten produziert werden: Nvidias Turing befindet sich auf der ausgereiften 12-nm-Fertigungslinie, während AMDs Navi auf dem neueren 7-nm-Knoten gebaut wird.

Allein ein Blick auf die Bilder der Muster sagt nicht viel über die Architekturen aus, also werfen wir einen Blick auf die GPU-Blockdiagramme beider Unternehmen.

Die Diagramme sind keine 100% realistische Darstellung der tatsächlichen Layouts, aber wenn Sie sie um 90 Grad drehen, können die verschiedenen Blöcke und der zentrale Streifen identifiziert werden, die in beiden erscheinen. Zunächst können wir sehen, dass die beiden GPUs einen allgemeinen Aufbau haben wie wir (allerdings mehr als alles andere!).

Beide Designs verfolgen einen mehrschichtigen Ansatz, wie alles organisiert und gruppiert ist - um mit der Verwendung von Navi zu beginnen, besteht die GPU aus 2 Blöcken, nach denen AMD sucht Shader-Engines (SE), von denen jeder 2 Blöcke genannt wird asynchron Rechenmaschinen (AS). Jeder davon enthält 5 Blöcke im Header. Arbeitsgruppen-Prozessoren (WGPs), die aus 2 . besteht Informationsverarbeitungseinheiten (Wesen).

Beim Turing-Design sind die Namen und Nummern unterschiedlich, aber die Hierarchie ist sehr ähnlich: 6 Grafik-Rendering-Sets (GPC), je 6 Textur-Rendering-Sets (TPC), je 2 Streaming-Multiprozessor (SM) Blöcke.

Wenn Sie eine GPU als eine große Fabrik betrachten, in der verschiedene Abteilungen unterschiedliche Produkte mit den gleichen Rohstoffen herstellen, macht diese Organisation Sinn. Der CEO der Fabrik sendet alle operativen Details an das Unternehmen, die dann in verschiedene Aufgaben und Arbeitsbelastungen aufgeschlüsselt werden. Indem Sie mehr als einen haben, unabhängig Die Produktivität der Belegschaft wurde in der Fabrik gesteigert. Nicht anders bei GPUs und dem magischen Stichwort hier zeitliche Koordinierung.

Front und Center, Truppe - Timing und Dispatch

Wie wir aussehen Studien zur 3D-SpielerstellungWir haben gesehen, dass die GPU nichts anderes als ein superschneller Rechner ist, der eine Reihe mathematischer Operationen mit Millionen von Daten durchführt. Navi und Turing werden klassifiziert als: Einzelner Befehl Mehrere Daten (SIMD) Prozessoren, aber eine bessere Erklärung ist Unidirektional Multi Faden (Sinn).

Ein modernes 3D-Spiel generiert Hunderte von Threads, manchmal sogar Tausende, da die Anzahl der zu verarbeitenden Scheitelpunkte und Pixel enorm ist. Um dies alles in wenigen Mikrosekunden zu erledigen, ist es wichtig, so viele Logikeinheiten wie möglich zu haben, ohne dass alles anhält, weil die erforderlichen Daten nicht an der richtigen Stelle sind oder nicht genügend Ressourcenplatz vorhanden ist, um darin zu arbeiten.

Als wir uns angeschaut haben, wie die 3D-Spielerstellung funktioniert, haben wir festgestellt, dass eine GPU nichts anderes als ein wirklich schneller Rechner ist, und wir haben verschiedene mathematische Operationen mit Millionen von Daten durchgeführt. Navi und Turing werden als Single Command Multiple Data (SIMD)-Prozessoren klassifiziert, aber eine bessere Beschreibung wäre Single Command Multiple Threads (SIMT).

Navi und Turing funktionieren ähnlich, sodass eine Zentraleinheit alle Threads übernimmt und dann mit der Programmierung und Übertragung beginnt. Im AMD-Chip ist diese Rolle Grafischer Befehlsprozessor; Nvidia'da, GigaThread Motoru. Die Threads sind so angeordnet, dass diejenigen mit denselben Anweisungen in einer Sammlung von 32 Gruppen zusammengefasst werden.

AMD diese Sammlung Wellein der Erwägung, dass Nvidia Krümmung. Für Navi kann eine Compute Unit 2 Waves (oder eine 64-Thread-Wave, aber das dauert doppelt so lange) und ein Stream-Multiprozessor in Turing mit 4 Warps verarbeiten. Beide Designs sind unabhängig von Wave/Warp, was bedeutet, dass die anderen nicht fertig sind, bevor sie beginnen.

Bis dahin ist es zwischen Navi und Turing nicht viel anders – beide sind darauf ausgelegt, mehrere Threads zum Erstellen und Berechnen von Workloads zu verarbeiten. Um zu sehen, wo die beiden GPU-Giganten im Design auseinanderlaufen, müssen wir uns ansehen, welche Prozessoren diese Threads haben.

Führungsunterschied - RDNA und CUDA

Während viele der verwendeten Begrifflichkeiten gleich zu sein scheinen, verfolgen AMD und Nvidia einen ganz anderen Ansatz bei Composite-Shader-Einheiten. Nvidias Ausführungseinheiten (WUNDER Kerne) Digital in der Natur - dies bedeutet, dass eine Einheit eine mathematische Operation an einer Datenkomponente durchführt; im Gegensatz zu AMD-Geräten (Stream-Prozessoren) arbeiten an Vektoren - eine Operation an mehr als einer Datenkomponente. Für skalare Operationen gibt es nur eine spezielle Einheit.

Bevor wir uns die Ausführungseinheiten genauer ansehen, betrachten wir AMDs eigene Modifikationen. 7 Jahre lang folgten Radeon-Grafikkarten einer Architektur namens Graphics Core Next (GCN). Jeder neue Chip hat verschiedene Aspekte des Designs überarbeitet, aber im Grunde war alles gleich.

AMD hat eine kurze Geschichte der GPU-Architektur bereitgestellt:

GCN war eine Weiterentwicklung von TeraScale, einem Design, das die gleichzeitige Verarbeitung großer Wellen ermöglichte. Das Hauptproblem bei TeraScale war, dass es Programmierern gegenüber nicht sehr freundlich war und sehr spezifische Routinen benötigte, um das Beste daraus zu machen. GCN hat dies behoben und eine viel zugänglichere Plattform bereitgestellt.

Die CUs in Navi wurden von GCN im Rahmen des Verbesserungsprozesses von AMD deutlich überarbeitet. Jede CU enthält zwei Sets:

  • 32 SP (IEE754 FP32- und INT32-Vektor-ALUs)
  • 1 SFU
  • 1 INT32 Waage ALU
  • 1 Zeit- und Versandeinheit

Außerdem enthält jede CU 4 Gewebeeinheiten. Es gibt andere Einheiten zum Ausführen von Lese-/Schreibvorgängen für Daten aus dem Cache, die jedoch in der folgenden Abbildung nicht gezeigt werden:

Im Vergleich zu GCN sieht der Aufbau einer RDNA CU vielleicht nicht viel anders aus, aber so ist hier alles Wichtige organisiert und angeordnet. Zu Beginn hat jeder Satz von 32 SP seine eigene spezifische Befehlseinheit, GCN hatte nur ein Programm für 4 Sätze von 16 SPs.

Dies ist eine signifikante Änderung, was bedeutet, dass eine 32-Thread-Welle pro Taktzyklus an jeden SP-Satz geliefert werden kann. Die RDNA-Architektur ermöglicht es Vektoreinheiten auch, 16-Thread-Wellen mit doppelter Geschwindigkeit und 64-Thread-Wellen mit der Hälfte zu verarbeiten, sodass Code, der für alle früheren Radeon-Grafikkarten geschrieben wurde, weiterhin unterstützt wird.

Bei Spieleentwicklern werden diese Änderungen sehr beliebt sein.

Für skalare Operationen gibt es jetzt zwei Einheiten, die sie verarbeiten können; die einzige Reduzierung der Komponentenanzahl erfolgt in Form von SFUs - diese Spezialfunktion Einheiten, das sehr spezifische mathematische Operationen durchführt, z.B. trigonometrisch (Sinus, Tangens), Kehrwert (durch eine Zahl geteilt) und Quadratwurzeln. RDNA hat weniger davon im Vergleich zu GCN, aber sie können jetzt auf doppelt so großen Datensätzen ausgeführt werden wie zuvor.

Bei Spieleentwicklern werden diese Änderungen sehr beliebt sein. Bei älteren Radeon-Grafikkarten gab es viel potenzielle Leistung, aber es war sehr schwierig. Jetzt hat AMD einen großen Schritt unternommen, um die Latenz bei Verarbeitungsanweisungen zu reduzieren und Funktionen beizubehalten, um die Abwärtskompatibilität für alle für die GCN-Architektur entwickelten Programme sicherzustellen.

Aber was ist mit professioneller Grafik oder dem Computermarkt? Sind diese Veränderungen auch für sie von Vorteil?

Die kurze Antwort ist ja (wahrscheinlich). Während die aktuelle Version des Navi-Chips der Radeon RX 5700 XT-Pendants weniger Stream-Prozessoren hat als das bisherige Vega-Design, wir haben besser abgeschnitten Die Radeon RX Vega 56 der vorherigen Generation ist ziemlich einfach:

Ein Teil dieses Leistungsgewinns wird von der RX Vega 56 kommen, der höheren Taktrate der RX 5700 XT (damit kann sie mehr Pixel pro Sekunde in den lokalen Speicher schreiben), sinkt jedoch um bis zu 15 % bei maximaler Integer- und Gleitkomma-Leistung; Wir haben jedoch festgestellt, dass der Navi-Chip den Vega um 18% übertrifft.

Wissenschaftler, die professionelle Rendering-Programme und komplexe Algorithmen betreiben, explodieren nicht mit ein paar Runden Battlefield V bei der Arbeit (d. h. vielleicht...) nur wenn Skalar-, Vektor- und Matrixoperationen in einer Game-Engine schneller verarbeitet werden, Schiff auf den Computermarkt. Im Moment wissen wir nicht, was AMD für den professionellen Markt vorhat - sie können durchaus mit der Vega-Architektur fortfahren und helfen, das Design und die Produktion zu verbessern, aber angesichts der Verbesserungen in Navi sollte das Unternehmen alles auf die neue Architektur umstellen .

Das GPU-Design von Nvidia hat seit 2006, als sie die GeForce-8-Serie auf den Markt brachten, eine ähnliche Entwicklung durchgemacht, wenn auch mit weniger radikalen Änderungen als bei AMD. Diese GPU war die erste Tesla-Architektur, die einen Shader-Ansatz in der Ausführungsarchitektur verwendete. Unten sehen wir die Änderungen in den SM-Blöcken vom Nachfolger von Tesla (Fermi) zu Turings Vorgänger (Volta):

Wie bereits in diesem Artikel erwähnt, sind CUDA-Kernel Digital. Sie können einen Float- und einen Integer-Befehl pro Taktzyklus in einer Datenkomponente ausführen (beachten Sie jedoch, dass die Verarbeitung des Befehls selbst mehrere Taktzyklen benötigen kann), aber die Zeitsteuerungseinheiten ordnen sie in Gruppen an, wodurch ein Programmierer Vektoroperationen erhält. Die bedeutendste Veränderung im Laufe der Jahre, abgesehen davon, dass es sich nur um mehr Einheiten handelt, betrifft ihre Organisation und Aufteilung.

Im Kepler-Design hatte der Vollchip 5 GPCs mit jeweils drei SM-Blöcken; Als Pascal auftauchte, wurden die GPCs in separate Partitionen (TPCs) mit zwei SMs pro TPC unterteilt. Wie im Navi-Design. diese Fragmentierung ist wichtig, da sie es ermöglicht, die gesamte GPU so vollständig wie möglich zu nutzen. mehrere unabhängige Befehlsgruppen können parallel verarbeitet werden, wodurch die Schatten- und Rechenleistung des Prozessors erhöht wird.

Schauen wir uns das Turing-Äquivalent mit der RDNA Compute Unit an:

Ein SM enthält 4 Transaktionsblöcke, von denen jeder Folgendes enthält:

  • 1 Anweisungsplanungs- und Versandeinheit
  • 16 IEE754 FP32 Waagen ALU
  • 16 INT32 Skalen ALU
  • 2 Tensorfarben
  • 4 SFU
  • 4 Laden/Speichern (das Cache-Lese-/Schreibvorgänge verarbeitet)

Es gibt auch 2 FP64-Einheiten pro SM, aber Nvidia zeigt sie nicht mehr in ihren Blockdiagrammen an und jedes SM hat 4 Textureinheiten (enthält Texturadressierungs- und Texturfiltersysteme) und 1 RT (Ray Tracing)-Kern.

FP32- und INT32-ALUs können gleichzeitig und parallel betrieben werden. Dies ist ein wichtiges Merkmal, denn obwohl 3D-Rendering-Engines oft Gleitkommaberechnungen erfordern, müssen eine ganze Reihe einfacher ganzzahliger Operationen (zB Berechnungen von Datenadressen) durchgeführt werden.

Tensor Cores sind spezielle ALUs, die Matrixoperationen ausführen. Matrizen sind 'quadratische' Daten-Arrays und Tensor-Kernel laufen auf 4 x 4 Matrizen. Der FP16 ist dafür ausgelegt, INT8- oder INT4-Datenkomponenten so zu verarbeiten, dass eine Float-Operation auf 64 FMA (Fused Multiply-Post-Addition) in einem Taktzyklus erfolgt. Diese Art der Berechnung ist die sogenannte Neuronale Netze und Inferenz - es ist nicht gerade üblich in 3D-Spielen, wird aber von Facebook in Fahrzeugen mit Social-Media-Analysealgorithmen oder selbstfahrenden Systemen stark verwendet. Navi kann auch Matrixberechnungen durchführen, benötigt dafür aber viel SP; Im Turing-System können Matrixoperationen durchgeführt werden, während die CUDA-Kerne andere Mathematik ausführen.

RT Core ist eine weitere proprietäre Einheit der Turing-Architektur, die sehr spezifische mathematische Algorithmen ausführt, die für das Raytracing-System von Nvidia verwendet werden. Eine vollständige Analyse davon würde den Rahmen dieses Artikels sprengen, aber RT Core sind zwei Systeme, die getrennt vom Rest des SM arbeiten, sodass es mit Vertex- oder Pixel-Shadern arbeiten kann, während RT Core mit Berechnungen beschäftigt ist. für Raytracing.

Grundsätzlich verfügen Navi und Turing über Ausführungseinheiten, die einen ziemlich ähnlichen Funktionsumfang bieten (eine Anforderung, die sich aus der Einhaltung der Anforderungen von Direct3D, OpenGL usw. ergibt)...

Grundsätzlich verfügen Navi und Turing über Ausführungseinheiten, die einen ziemlich ähnlichen Funktionsumfang bieten (eine Anforderung, die sich aus der Einhaltung der Anforderungen von Direct3D, OpenGL usw. ergibt), aber sie verfolgen einen ganz anderen Ansatz in Bezug auf diese Funktionen. fertig. Welches Design besser ist, hängt von der Verwendung ab: Ein Programm, das FP32-Vektorberechnungen und viele Threads mit geringer Leistung generiert, wird Navi bevorzugen, während ein Programm mit einer Vielzahl von Integer-, Gleitkomma-, Skalar- und Vektorberechnungen verwenden Turings Flexibilität, bevorzugen usw.

Speicherhierarchie

Moderne GPUs sind Stream-Prozessoren, das heißt, sie sind darauf ausgelegt, eine Reihe von Operationen an jedem Element in einem Datenstrom durchzuführen. Dies macht sie weniger flexibel als eine Allzweck-CPU und erfordert außerdem eine Optimierung der Speicherhierarchie des Chips, um Daten und Anweisungen so schnell und in möglichst vielen Strömen an die ALUs zu bringen. Dies bedeutet, dass GPUs weniger Cache als die CPU haben, da der größte Teil des Chips für die Cache-Menge reserviert werden muss, nicht für den Cache-Zugriff.

Sowohl AMD als auch Nvidia greifen auf die Verwendung mehrerer Caches innerhalb der Chips zurück. Schauen wir uns also zuerst an, was Navi packt.

Beginnend auf der untersten Ebene der Hierarchie werden in den beiden Blöcken von Stream-Prozessoren (normalerweise .) insgesamt 256 Kilo Vektor-Allzweckregister verwendet Logdatei) war die gleiche Menge wie Vega, aber zwischen 4 SP-Blöcken; Wenn beim Versuch, eine große Anzahl von Threads zu verarbeiten, die Register ausgehen, beeinträchtigt dies die Leistung wirklich, daher ist dies definitiv eine "gute Sache". AMD hat auch die Skalarregisterdatei stark vergrößert. Wo es vorher nur 4 kiB waren, sind es jetzt 32 Kilo pro Skalareinheit.

Die beiden Recheneinheiten teilen sich dann einen 32-Pfund-L0-Cache und einen 16-Pfund-Skalardaten-Cache, aber jede CU erhält ihren eigenen 32-Pfund-Vektor-L0-Cache; die Verbindung des gesamten Speichers mit den ALUs ist ein 128-Pfund-Local Data Share.

In Navi bilden zwei Compute Engines einen Arbeitsgruppenprozessor und fünf davon bilden die Asynchronous Compute Engine (ACE). Jeder ACE hat Zugriff auf seinen eigenen 128-Pfund-L1-Cache, und die gesamte GPU wird weiter von einem 4 MiB L2-Cache unterstützt, der mit L1-Caches und anderen Teilen des Prozessors verbunden ist.

Es ist eine Form der proprietären Infinity Fabric-Konnektivitätsarchitektur von AMD, da das System ausschließlich zur Verarbeitung von 16 GDDR6-Speichercontrollern verwendet wird. Um die Speicherbandbreite zu maximieren, verwendet Navi außerdem eine verlustfreie Farbkompression zwischen L1-, L2- und nativem GDDR6-Speicher.

Auch hier ist all dies willkommen, insbesondere im Vergleich zu früheren AMD-Chips, die nicht genügend Low-Level-Cache für die Anzahl der enthaltenen Shading-Einheiten hatten. Kurz gesagt, mehr Cache bedeutet mehr interne Bandbreite, weniger träge Anweisungen (da sie mehr Daten aus dem Speicher holen müssen) usw. Und das bedeutet einfach eine bessere Leistung.

In der Turing-Hierarchie muss man sagen, dass Nvidia eher schüchtern ist, wenn es darum geht, fundiertes Wissen in diesem Bereich bereitzustellen. Zuvor in diesem Artikel haben wir gesehen, dass jeder SM in 4 Transaktionsblöcke unterteilt ist – jeder mit einer kleineren 64-Pfund-Protokolldatei als die in Navi gefundene, aber denken Sie daran, dass Turings ALUs skalar und nicht vektoriell sind. , Einheiten.

Als nächstes können 96 kB gemeinsamer Speicher, 64 kB L1-Daten-Cache und 32 kB Textur-Cache oder zusätzlicher Speicherplatz für jeden SM verwendet werden. Im 'Compute-Modus' kann Shared Memory in verschiedene Partitionen wie 32 kB Shared Memory und 64 kB L1-Cache aufgeteilt werden, aber immer als 64 + 32 Partitionen.

Der Mangel an Details zum drehenden Speichersystem machte uns Lust auf mehr, also wandten wir uns an ein GPU-Forschungsteam von Citadel Enterprise Americas. Kürzlich haben sie zwei Artikel veröffentlicht. Zeit ve Turing ihre Architektur; Das obige Bild ist die Fragmentierung der Speicherhierarchie im TU104-Chip (voller TU102 mit 6144 kiB L2-Cache).

Das Team bestätigte, dass der L1-Cache-Durchsatz 64 Bit pro Zyklus betrug und stellte fest, dass die Effizienz des L1-Cache von Turing im Test die beste aller Nvidia-GPUs war. Dies ist auf Augenhöhe mit Navi, obwohl AMDs Chip eine höhere Leserate für Local Datastore hat, aber eine niedrigere Rate für Instruktionen / feste Caches.

Beide GPUs verwenden GDDR6 für nativen Speicher – dies ist die neueste Version von Graphics DDR SDRAM – und beide verwenden 32-Bit-Verbindungen zu Speichermodulen, also Radeon RX 5700 XT Es verfügt über 256 Speicherchips und bietet eine Spitzenbandbreite von 256 GiB/s und 8 GiB Speicherplatz. einer GeForce RTX 2080 Ti Es arbeitet mit dem TU102-Chip, mit 11 solcher Module für 352 GiB/s Bandbreite und 11 GiB Speicher.

AMDs Dokumentation kann manchmal verwirrend erscheinen: Das erste Blockdiagramm, das wir sehen, zeigt Navi vier 64-Bit-Speichercontroller, während ein späteres Bild 16 Controller zeigt. In Anbetracht Samsung bietet nur 32-Bit-GDDR6 . an Das zweite Bild scheint zu zeigen, wie viele Verbindungen zwischen dem Infinity Fabric-System und den Speichercontrollern bestehen. Es gibt wahrscheinlich nur 4 Speichercontroller und jeder verwendet zwei Module.

Insgesamt scheint es keinen großen Unterschied zwischen Navi und Turing zu geben, wenn es um Caches und lokalen Speicher geht. Navis Ansatz für die Ausführungsseite von Dingen mit größeren Instruktions- / Konstanten- und L1-Caches ist kaum mehr, aber beide sind vollgestopft, verwenden beide nach Möglichkeit Farbkomprimierung und haben viele dedizierte GPU-Dies, sowohl beim Speicherzugriff als auch gewohnt Bandbreite maximieren.

Dreiecke, Texturen und Pixel

Vor fünfzehn Jahren haben GPU-Hersteller viel darüber unternommen, wie viele Dreiecke ihre Chips rendern können, die Anzahl der Texturelemente, die pro Zyklus gefiltert werden können, und die Fähigkeit, Ausgabeeinheiten (ROPs) zu rendern. Diese Aspekte sind auch heute noch wichtig, der Fokus liegt jedoch viel mehr auf der Ausführungsseite, da 3D-Rendering-Technologien mehr Rechenleistung erfordern als je zuvor.

Um jedoch zu beachten, dass in diesen Bereichen kein sofort erkennbarer Unterschied zwischen Navi und Turing besteht, sind Textureinheiten und ROPs immer noch eine Untersuchung wert. In beiden Architekturen können Textureinheiten 4 Texturelemente handhaben und abrufen, sie unbekannt in einem einzigen Element filtern und sie alle in einem Taktzyklus zwischenspeichern (wobei die zusätzlichen Taktzyklen ignoriert werden, die benötigt werden, um Daten aus dem lokalen Speicher abzurufen).

Die Anordnung der ROP/RBs unterscheidet sich zwischen Navi und Turing geringfügig, aber nicht viel: Der AMD-Chip hat 4 RBs pro ACE und jeder kann 4 gemischte Pixel pro Taktzyklus ausgeben; In Turing hat jeder GPC zwei RBs mit jeweils 8 Pixeln pro Stunde. Die ROP-Anzahl der GPU ist wirklich ein Maß für diese Pixel-Ausgabegeschwindigkeit, so dass ein voller Navi-Chip 64 Pixel pro Takt ergibt und der volle TU102 96 (aber bedenken Sie, dass dies ein größerer Chip ist).

Es gibt weniger Informationen über die dreieckige Seite der Dinge. Was wir wissen ist, dass Navi immer noch maximal 4 Primitive pro Taktzyklus (1 pro ACE) angibt, aber es gibt noch keine Informationen darüber, ob AMD das Problem mit diesem Problem behoben hat. Primitive Shader. Dies war eine viel gepriesene Funktion von Vega und ermöglichte Programmierern viel mehr Kontrolle über Primitiven, sodass der Durchsatz der Primitiven um den Faktor 4 erhöht werden konnte. Funktionalität aus Treibern entfernt Das Produkt war kurz nach seiner Einführung inaktiv und ist seitdem inaktiv.

Während wir noch auf weitere Informationen zu Navi warten, wäre es unklug, weiter zu spekulieren. Turing verarbeitet auch 1 Primitiv pro Takt pro GPC (d. h. bis zu 6 für eine volle TU102-GPU) in Raster Engines, aber es ist auch Mesh-ShaderBietet die gleiche Funktionalität wie die Primitive Shader von AMD; Direct3D ist kein OpenGL- oder Vulkan-Feature-Set, aber über API-Erweiterungen verfügbar.

Dies scheint Turing im Umgang mit Dreiecken und Primitiven einen Vorteil gegenüber Navi zu verschaffen, aber es gibt derzeit nicht genügend genaue Informationen in der Öffentlichkeit.

Es geht nicht nur um Executive Units

Es gibt andere Aspekte von Navi und Turing, die einen Vergleich wert sind. Zunächst verfügen beide GPUs über hochentwickelte Display- und Media-Engines. Der erste verarbeitet die Ausgabe zum Monitor, der zweite kodiert und dekodiert die Videostreams.

Wie Sie es von einem neuen 2019er GPU-Design erwarten würden, bietet die Display-Engine von Navi sehr hohe Auflösungen bei hohen Bildwiederholraten und unterstützt HDR. Streamkomprimierung anzeigen (DSC) ist ein schneller verlustbehafteter Komprimierungsalgorithmus, der die Übertragung von 4K+-Auflösungen bei Bildwiederholfrequenzen von mehr als 60 Hz über eine DisplayPort 1.4-Verbindung ermöglicht; Glücklicherweise ist die Verschlechterung der Bildqualität sehr gering, so dass Sie DSC als nahezu verlustfrei betrachten.

Turing unterstützt auch DisplayPort mit DSC-Anschlüssen, allerdings ist die unterstützte Kombination aus hoher Auflösung und Bildwiederholrate etwas besser als bei Navi: 4K HDR bei 144 Hz - der Rest ist gleich.

Die Media-Engine von Navi ist ebenso modern und ausgereift wie die Display-Engine. Erweiterte Videocodierung (H.264) und Hocheffiziente Videocodierung (H.265), wiederum bei hohen Auflösungen und hohen Bitraten.

Die Video-Engine von Turing ist ungefähr die gleiche wie die von Navi, aber die Unterstützung für die 8K30-HDR-Codierung könnte für einige Leute den Ausschlag zu Turings Gunsten geben.

Es gibt noch andere Aspekte zu vergleichen (zum Beispiel Navis PCI Express 4.0-Schnittstelle oder Turings NV Link), aber es sind wirklich sehr kleine Teile der Gesamtarchitektur, egal wie gekleidet und vermarktet sie sind. Dies liegt daran, dass diese einzigartigen Funktionen für die überwiegende Mehrheit der potenziellen Benutzer keine Rolle spielen.

Like-for-Like-Vergleich

Dieser Artikel ist eine Beobachtung des architektonischen Designs, der Features und der Funktionalität, aber ein direkter Leistungsvergleich wäre eine gute Möglichkeit, eine solche Analyse abzuschließen. Den Navi-Chip in einer Radeon RX 5700 XT mit dem Turing-TU102-Prozessor in einer GeForce RTX 2080 Ti auf einer GeForce RTX 2080 Ti zu koppeln, wäre jedoch besonders unfair, da letztere fast doppelt so viele Shader-Einheiten zusammen hat. Zum Vergleich gibt es jedoch eine Version des Turing-Chips, die in der GeForce RTX 2070 Super zu finden ist.

  Radeon RX 5700 XT GeForce RTX 2070 Super
GPU | Architektur Navi 10 | rDNA TU104 | Turing
Prozess 7 nm TSMC 12 nm TSMC
Formfläche (mm2) 251 545
Transistoren (Milliarden) 10.3 13.6
Profil blockieren 2 SE | 4 AS | 40 PB 5 GPC | 20 TPC | 40 SM
Einheitliche Shader-Kernel 2560 SP 2560 WUNDER
TMUs 160 160
ROPS 64 64
Grunduhr 1605 MHz 1605 MHz
Spieluhr 1755 MHz N / A
Boost-Uhr 1905 MHz 1770 MHz
Erinnerung 8 GB 256-Bit-GDDR6 8 GB 256-Bit-GDDR6
Speicherbandbreite 448 GB/s 448 GB/s
Thermische Designleistung (TDP) 225 Watt 215 Watt.

Es ist erwähnenswert, dass der RTX 2070 Super kein „vollständiger“ TU104-Chip ist (einer der GPCs ist deaktiviert), sodass nicht alle dieser 13,6-Transistoren aktiv sind, was bedeutet, dass die Chips in Bezug auf die Transistoranzahl ungefähr gleich sind. Auf den ersten Blick sehen sich die beiden GPUs sehr ähnlich, vor allem wenn man nur Shader-Einheiten, TMUs, ROPs und Hauptspeichersysteme betrachtet.

Auf dem Nvidia-Prozessor kann ein SM 32 gleichzeitige Warps verarbeiten, und mit jedem 32-Thread-Warp kann eine voll geladene GeForce RTX 2070 Super mit 40.960 Threads über den gesamten Chip laufen; Für Navi kann eine CU 16 Wellen pro SIMD32-ALU empfangen, und jede Welle umfasst 32 Threads. So kann die Radeon RX 5700 XT auch bis zu 40.960 Threads packen. Dies mag auch hier so aussehen, als würden sie es richtig machen, aber angesichts der unterschiedlichen Anordnung der CU/SMs und des Vorteils von Nvidia bei der gleichzeitigen INT- und FP-Verarbeitung hängt das Ergebnis stark vom ausgeführten Code ab.

Welche Auswirkungen hätte dies auf die verschiedenen Spielleistungen, da der Code einer 3D-Engine einen Build gegenüber dem anderen bevorzugt, je nachdem, welche Art von Anweisungen routinemäßig an die GPU gesendet werden. Es, zwei Grafikkarten getestet:

Alle im Test verwendeten Spiele wurden direkt für mit Radeon ausgestattete PCs oder für AMDs GCN-Architektur über GCN-GPUs der PlayStation 4 oder Xbox One programmiert. Es ist möglich, dass einige der jüngsten Releases auf Änderungen an RDNA vorbereitet sind, aber die Unterschiede in den Benchmark-Ergebnissen sind wahrscheinlicher auf Rendering-Engines und die Art und Weise zurückzuführen, wie Anweisungen und Daten behandelt werden.

Was bedeutet das alles? Ist eine Architektur wirklich besser als eine andere? Turing bietet dank Tensor und RT Cores sicherlich mehr Kapazität als Navi, aber letzteres ist in Sachen 3D-Rendering-Performance definitiv konkurrenzfähig. Die Unterschiede in den 12 Spielbeispielen sind nicht deutlich genug, um ein sicheres Urteil zu fällen.

Und das sind gute Nachrichten für uns.

letzte Worte

AMDs Navi-Pläne angekündigt Es ist im Jahr 2016 und sie strebten eine Markteinführung für 2018 an, obwohl sie nicht viel sagten. Wenn dieses Datum kommt und geht, Straßenkarte geändert Es war jedoch klar, dass Navi auf einem 7-nm-Prozessknoten hergestellt werden würde und sich das Design auf die Verbesserung der Leistung konzentrieren würde.

Das war sicherlich der Fall, und wie wir in diesem Artikel gesehen haben, hat AMD architektonische Änderungen vorgenommen, damit es mit den gleichwertigen Angeboten von Nvidia konkurrieren kann. Das neue Design kommt nicht nur PC-Benutzern zugute, da Sony und Microsoft in der kommenden Zeit eine Variante des Chips verwenden werden. Playstation 5 ve sonraki xbox.

Wenn Sie zum Anfang dieses Artikels zurückkehren und sich das strukturelle Design der Shader-Motoren, die Gesamtchipgröße und die Transistoranzahl noch einmal ansehen, gibt es eindeutig Spielraum für einen "großen Navi"-Chip, der sich durchsetzen kann. neueste Grafikkarte; AMD hat so ziemlich bestätigt, dass dies Teil ihrer aktuellen Pläne ist und zielt darauf ab, die Architektur und den Herstellungsprozess in den nächsten zwei Jahren zu verbessern.

Doch was plant Nvidia für Turing und seinen Nachfolger? Überraschenderweise wurde vom Unternehmen wenig bestätigt. Im Jahr 2014 hat Nvidia Aktualisierte GPU-Roadmap Planung (und Realisierung) der Pascal-Architektur für die Markteinführung 2016. im Jahr 2017, Tesla kündigt V100 . anUnter Verwendung der Volta-Architektur war es dieses Design, das Turing 2018 enthüllte.

Seitdem war es ziemlich ruhig und wir mussten uns auf Gerüchte und News-Schnipsel verlassen, die oft dasselbe sagen: Nvidias nächste Architektur wird Ampere heißen, Hergestellt von Samsung Es verwendet den 7-nm-Prozessknoten und ist für 2020 geplant. Ansonsten geht nichts weiter. Es ist unwahrscheinlich, dass der neue Chip die Tradition durchbricht, indem er sich auf skalare Ausführungseinheiten konzentriert, noch wird er wahrscheinlich Aspekte wie Tensor-Kerne fallen lassen, da dies zu erheblichen Abwärtskompatibilitätsproblemen führen würde.

Wir können noch einige vernünftige Vermutungen darüber anstellen, wie die nächste Nvidia-GPU aussehen wird. Das Unternehmen hat viel Zeit und Geld investiert. Raytracingund seine Unterstützung nur in Spielen erhöhen, ansteigen; Wir können also mit einer Verbesserung des RT-Kerns in Bezug auf Fähigkeiten oder Anzahl pro SM rechnen. Wenn man 7 nm Prozessknoten Wenn dies der Fall ist, wird Nvidia wahrscheinlich eher eine Leistungsreduzierung als eine direkte Erhöhung der Taktrate anstreben, damit die Anzahl der GPCs erhöht werden kann. Es ist auch möglich, dass 7 nm übersprungen werden und Nvidia hochfährt. flach für 5 nm Um sich einen Vorteil gegenüber AMD zu verschaffen.

Sieht aus wie AMD und Nvidia, separate Grafikkarte graphics Markt von Intel, da wir wissen, dass sie einen Wiedereinstieg in diese Branche planen, 20 Jahre Pause. Dieses neue Produkt (derzeit namens xe) wird mit Navi und Turing auf Augenhöhe mithalten können.

Inzwischen hat Intel diese zwei Jahrzehnte auf dem GPU-Markt überlebt, indem es integrierte Grafiken für seine CPUs herstellt. Intels neueste GPU Gen 11Es ähnelt der Architektur von AMD, da es Vektor-ALUs verwendet, die FP32- und INT32-Daten verarbeiten können, aber wir wissen nicht, ob die neuen Grafikkarten eine direkte Weiterentwicklung dieses Designs sein werden.

Sicher ist, dass die nächsten Jahre sehr interessant werden, da die drei Giganten der Siliziumstrukturen weiter um unsere Geldbörsen kämpfen. Neue GPU-Designs und -Architekturen werden die Anzahl der Transistoren, die Cache-Größen und die Shader-Fähigkeiten erhöhen. Navi und RDNA sind die neuesten davon und haben gezeigt, dass jeder Schritt nach vorne einen kleinen Unterschied machen kann.

Einkaufskürzel:

Dieser Artikel wurde ursprünglich am 7. August 2019 veröffentlicht. Wir haben es im Rahmen unserer #ThrowbackThursday-Initiative etwas überarbeitet und aufpoliert.