Kepler (Mikroarchitektur) - Kepler (microarchitecture)

Nvidia Kepler
Veröffentlichungsdatum April 2012
Herstellungsprozess TSMC 28 nm
Geschichte
Vorgänger Fermi
Nachfolger Maxwell

Kepler ist der Codename für eine von Nvidia entwickelte GPU- Mikroarchitektur , die erstmals im April 2012 als Nachfolger der Fermi- Mikroarchitektur im Handel eingeführt wurde . Kepler war die erste Mikroarchitektur von Nvidia, die sich auf Energieeffizienz konzentrierte. Die meisten GPUs der GeForce 600-Serie , die meisten GeForce 700-Serien und einige GPUs der GeForce 800M-Serie basierten auf Kepler, die alle in 28 nm hergestellt wurden. Kepler fand auch im GK20A, der GPU-Komponente des Tegra K1- SoCs , sowie in der Quadro Kxxx-Serie, dem Quadro NVS 510 und Nvidia Tesla Computing-Modulen Verwendung. Auf Kepler folgte die Maxwell- Mikroarchitektur und wurde neben Maxwell in der GeForce 700-Serie und der GeForce 800M-Serie verwendet .

Die Architektur ist nach Johannes Kepler benannt , einem deutschen Mathematiker und Schlüsselfigur der wissenschaftlichen Revolution des 17. Jahrhunderts .

Überblick

Die Aufnahme einer GK110 A1-GPU, die sich in GeForce GTX Titan-Karten befindet

Während das Ziel der vorherigen Architektur von Nvidia darin bestand, die Leistung bei Computing und Tessellation zu steigern, konzentrierte sich Nvidia bei der Kepler-Architektur auf Effizienz, Programmierbarkeit und Leistung. Das Effizienzziel wurde durch die Verwendung eines einheitlichen GPU-Takts, eine vereinfachte statische Planung von Anweisungen und eine stärkere Betonung der Leistung pro Watt erreicht. Durch den Verzicht auf den Shader-Takt ihrer vorherigen GPU-Designs wird die Effizienz erhöht, obwohl zusätzliche Kerne erforderlich sind, um ein höheres Leistungsniveau zu erreichen. Dies liegt nicht nur daran, dass die Kerne energiefreundlicher sind (zwei Kepler-Kerne verbrauchen laut Nvidias Zahlen 90 % der Leistung eines Fermi-Kerns), sondern auch der Wechsel zu einem einheitlichen GPU-Taktschema führt zu einer 50-prozentigen Reduzierung des Stromverbrauchs in dieser Bereich.

Das Ziel der Programmierbarkeit wurde mit Keplers Hyper-Q, Dynamic Parallelism und mehreren neuen Compute Capabilities 3.x-Funktionen erreicht. Damit war eine höhere GPU-Auslastung und ein vereinfachtes Code-Management mit GK-GPUs erreichbar, was mehr Flexibilität bei der Programmierung für Kepler-GPUs ermöglicht.

Mit dem Leistungsziel schließlich steigern zusätzliche Ausführungsressourcen (mehr CUDA Core, Register und Cache) und mit Keplers Fähigkeit, eine Speichertaktrate von 6 GHz zu erreichen, die Kepler-Leistung im Vergleich zu früheren Nvidia-GPUs.

Merkmale

Die GPU der GK-Serie enthält Funktionen sowohl der älteren Fermi- als auch der neueren Kepler-Generationen. Kepler-basierte Mitglieder fügen die folgenden Standardfunktionen hinzu:

  • PCI Express 3.0- Schnittstelle
  • DisplayPort 1.2
  • HDMI 1.4a 4K x 2K Videoausgang
  • Purevideo VP5 Hardware-Videobeschleunigung (bis zu 4K x 2K H.264-Dekodierung)
  • Hardware H.264 Encoding Acceleration Block (NVENC)
  • Unterstützung für bis zu 4 unabhängige 2D-Displays oder 3 stereoskopische/3D-Displays (NV Surround)
  • Streaming-Multiprozessor der nächsten Generation (SMX)
  • Polymorph-Engine 2.0
  • Vereinfachter Anweisungsplaner
  • Bindungslose Texturen
  • CUDA- Rechenfähigkeit 3.0 bis 3.5
  • GPU-Boost (auf 2.0 auf GK110 aktualisiert)
  • TXAA-Unterstützung
  • Hergestellt von TSMC im 28-nm-Prozess
  • Neue Shuffle-Anleitung
  • Dynamische Parallelität
  • Hyper-Q (die MPI-Funktionsreserve von Hyper-Q nur für Tesla)
  • Netzmanagementeinheit
  • NVIDIA GPUDirect (RDMA-Funktionsreserve von GPU Direct nur für Tesla)

Streaming-Multiprozessor der nächsten Generation (SMX)

Die Kepler-Architektur verwendet eine neue Streaming-Multiprozessor-Architektur namens "SMX". SMXs sind der Grund für die Energieeffizienz von Kepler, da die gesamte GPU eine einzige einheitliche Taktrate verwendet. Obwohl SMXs Verwendung eines einzigen einheitlichen Takts die Energieeffizienz erhöht, da mehrere Kepler CUDA Cores mit niedrigerem Takt 90% weniger Strom verbrauchen als mehrere Fermi CUDA Cores mit höherem Takt, werden zusätzliche Verarbeitungseinheiten benötigt, um einen ganzen Warp pro Zyklus auszuführen. Die Verdopplung von 16 auf 32 pro CUDA-Array löst das Warp-Ausführungsproblem, das SMX-Frontend ist auch doppelt mit Warp-Schedulern, Dispatch-Einheit und der Registerdatei auf 64K Einträge verdoppelt, um die zusätzlichen Ausführungseinheiten zu versorgen. Da die SMX-PolyMorph-Engines auf 2,0 erweitert werden, anstatt sich neben den Ausführungseinheiten zu verdoppeln, besteht die Gefahr, dass die Düsenfläche aufgeblasen wird, wodurch Polygone in kürzeren Zyklen beschleunigt werden können. Es werden auch dedizierte FP64- CUDA-Kerne verwendet, da alle Kepler-CUDA-Kerne nicht FP64-fähig sind, um Platz zu sparen. Mit der Verbesserung, die Nvidia am SMX vorgenommen hat, sind die Ergebnisse eine Steigerung der GPU-Leistung und -Effizienz. Mit GK110 wird der 48-KB-Textur-Cache für Compute-Workloads freigeschaltet. Bei Compute-Workloads wird der Textur-Cache zu einem schreibgeschützten Daten-Cache, der sich auf nicht ausgerichtete Arbeitslasten mit Speicherzugriff spezialisiert hat. Darüber hinaus wurden Fehlererkennungsfunktionen hinzugefügt, um die Sicherheit von Workloads zu erhöhen, die auf ECC angewiesen sind. Auch die Register-pro-Thread-Anzahl wird in GK110 mit 255 Registern pro Thread verdoppelt.

Vereinfachter Anweisungsplaner

Durch das Entfernen eines komplexen Hardwareblocks, der die Vermeidung von Datenrisiken bewältigte, wurde eine zusätzliche Platzeinsparung und Energieeinsparung erreicht.

GPU-Boost

GPU Boost ist eine neue Funktion, die ungefähr dem Turbo-Boosting einer CPU entspricht. Die GPU läuft immer mit einer minimalen Taktrate, die als "Basistakt" bezeichnet wird. Diese Taktrate ist auf ein Niveau eingestellt, das sicherstellt, dass die GPU auch bei maximaler Last innerhalb der TDP- Spezifikationen bleibt . Bei geringerer Last kann die Taktrate jedoch erhöht werden, ohne die TDP zu überschreiten. In diesen Szenarien erhöht GPU Boost die Taktrate schrittweise, bis die GPU ein vordefiniertes Leistungsziel erreicht (standardmäßig 170 W). Bei diesem Ansatz wird die GPU ihren Takt dynamisch hoch- oder runterfahren, so dass sie die maximal mögliche Geschwindigkeit bietet, während sie innerhalb der TDP-Spezifikationen bleibt.

Das Leistungsziel sowie die Größe der Takterhöhungsschritte, die die GPU ausführen wird, sind beide über Dienstprogramme von Drittanbietern einstellbar und bieten eine Möglichkeit zum Übertakten von Kepler-basierten Karten.

Microsoft Direct3D-Unterstützung

Nvidia Fermi und Kepler GPUs der GeForce 600 Serie unterstützen die Direct3D 11.0 Spezifikation. Nvidia gab ursprünglich an, dass die Kepler-Architektur volle DirectX 11.1-Unterstützung bietet, die den Direct3D 11.1-Pfad einschließt. Die folgenden "Modern UI" Direct3D 11.1-Features werden jedoch nicht unterstützt:

  • Zielunabhängige Rasterung (nur 2D-Rendering).
  • 16xMSAA-Rasterisierung (nur 2D-Rendering).
  • Rendermodus für orthogonale Linien.
  • UAV (Unordered Access View) in Nicht-Pixel-Shader-Stufen.

Laut Definition von Microsoft muss Direct3D-Feature-Level 11_1 vollständig sein, sonst kann der Direct3D 11.1-Pfad nicht ausgeführt werden. Die integrierten Direct3D-Features der Kepler-Architektur entsprechen denen der Fermi-Architektur der GeForce 400-Serie.

Weiter Microsoft Direct3D-Unterstützung

NVIDIA Kepler GPUs der GeForce 600/700 Serie unterstützen Direct3D 12 Feature Level 11_0.

TXAA-Unterstützung

Exklusiv für Kepler-GPUs ist TXAA eine neue Anti-Aliasing-Methode von Nvidia, die für die direkte Implementierung in Spiele-Engines entwickelt wurde. TXAA basiert auf der MSAA- Technik und benutzerdefinierten Auflösungsfiltern. Es wurde entwickelt , um ein Schlüsselproblem in Spielen zu lösen , das als Schimmern oder zeitliches Aliasing bekannt ist . TXAA behebt dies, indem es die bewegte Szene glättet und sicherstellt, dass jede Szene im Spiel von Aliasing und Schimmern befreit wird.

Shuffle-Anweisungen

Auf einer niedrigen Ebene sieht GK110 zusätzliche Anweisungen und Operationen, um die Leistung weiter zu verbessern. Neue Shuffle-Anweisungen ermöglichen es Threads innerhalb eines Warps, Daten gemeinsam zu nutzen, ohne in den Speicher zurückkehren zu müssen, wodurch der Prozess viel schneller ist als die vorherige Methode zum Laden/Teilen/Speichern. Atomare Operationen werden ebenfalls überarbeitet, wodurch die Ausführungsgeschwindigkeit atomarer Operationen erhöht und einige FP64-Operationen hinzugefügt werden, die zuvor nur für FP32-Daten verfügbar waren.

Hyper-Q

Hyper-Q erweitert die GK110-Hardware-Arbeitswarteschlangen von 1 auf 32. Dies bedeutet, dass Fermi mit einer einzigen Arbeitswarteschlange manchmal unterbesetzt sein konnte, da in dieser Warteschlange nicht genug Arbeit vorhanden war, um alle SM zu füllen. Mit 32 Arbeitswarteschlangen kann der GK110 in vielen Szenarien eine höhere Auslastung erreichen, indem er unterschiedliche Aufgabenströme auf einem ansonsten untätigen SMX ablegen kann. Die einfache Natur von Hyper-Q wird durch die einfache Zuordnung zu MPI, einer häufig in HPC verwendeten Schnittstelle zur Nachrichtenweitergabe, noch verstärkt. Da ältere MPI-basierte Algorithmen, die ursprünglich für Multi-CPU-Systeme entwickelt wurden, die durch falsche Abhängigkeiten einen Engpass bekamen, jetzt eine Lösung haben. Durch die Erhöhung der Anzahl der MPI-Jobs ist es möglich, Hyper-Q für diese Algorithmen zu verwenden, um die Effizienz zu verbessern, ohne den Code selbst zu ändern.

Dynamische Parallelität

Die Fähigkeit zur dynamischen Parallelität dient dazu, dass Kernel in der Lage sind, andere Kernel zu versenden. Bei Fermi könnte nur die CPU einen Kernel abfertigen, was einen gewissen Overhead verursacht, indem sie zurück zur CPU kommunizieren muss. Indem Kernel die Möglichkeit erhalten, ihre eigenen untergeordneten Kernel zu versenden, kann GK110 sowohl Zeit sparen, indem es nicht zur CPU zurückkehren muss, als auch die CPU für andere Aufgaben freigeben.

Netzmanagementeinheit

Die Ermöglichung dynamischer Parallelität erfordert ein neues Netzmanagement- und Dispatch-Steuerungssystem. Die neue Grid Management Unit (GMU) verwaltet und priorisiert auszuführende Netze. Die GMU kann den Versand neuer Grids anhalten und anstehende und ausgesetzte Grids in die Warteschlange stellen, bis sie zur Ausführung bereit sind, und bietet so die Flexibilität, leistungsstarke Laufzeiten wie dynamische Parallelität zu ermöglichen. Der CUDA Work Distributor in Kepler hält versandfertige Netze bereit und kann 32 aktive Netze disponieren, was der doppelten Kapazität des Fermi CWD entspricht. Der Kepler CWD kommuniziert mit der GMU über eine bidirektionale Verbindung, die es der GMU ermöglicht, die Zuteilung neuer Netze zu pausieren und schwebende und ausgesetzte Netze zu halten, bis sie benötigt werden. Die GMU hat auch eine direkte Verbindung zu den Kepler SMX-Einheiten, um Grids zu ermöglichen, die über dynamische Parallelität zusätzliche Arbeit auf der GPU starten, um die neue Arbeit zur Priorisierung und Weiterleitung an die GMU zurückzusenden. Wenn der Kernel, der die zusätzliche Arbeitslast verteilt hat, pausiert, hält die GMU ihn inaktiv, bis die abhängige Arbeit abgeschlossen ist.

NVIDIA GPUDirect

NVIDIA GPUDirect ist eine Funktion, die es GPUs innerhalb eines einzelnen Computers oder GPUs in verschiedenen Servern in einem Netzwerk ermöglicht, Daten direkt auszutauschen, ohne auf CPU/Systemspeicher wechseln zu müssen. Die RDMA-Funktion in GPUDirect ermöglicht Geräten von Drittanbietern wie SSDs, NICs und IB-Adaptern den direkten Zugriff auf den Speicher auf mehreren GPUs innerhalb desselben Systems, wodurch die Latenz beim Senden und Empfangen von MPI-Nachrichten zum/vom GPU-Speicher erheblich verringert wird. Es reduziert auch die Anforderungen an die Systemspeicherbandbreite und gibt die GPU-DMA-Engines für die Verwendung durch andere CUDA-Aufgaben frei. Kepler GK110 unterstützt auch andere GPUDirect-Funktionen, einschließlich Peer-to-Peer und GPUDirect for Video.

Videodekomprimierung/-komprimierung

NVDEC

NVENC

NVENC ist die energieeffiziente Kodierung mit fester Funktion von Nvidia, die Codecs aufnehmen, dekodieren, vorverarbeiten und H.264-basierte Inhalte kodieren kann. Die Eingabeformate der NVENC-Spezifikation sind auf die H.264-Ausgabe beschränkt. Trotzdem kann NVENC durch sein begrenztes Format eine Codierung von bis zu 4096 x 4096 unterstützen.

Wie Intels Quick Sync wird NVENC derzeit über eine proprietäre API bereitgestellt, obwohl Nvidia plant, die NVENC-Nutzung über CUDA bereitzustellen.

Leistung

Die theoretische Rechenleistung mit einfacher Genauigkeit einer Kepler-GPU in GFLOPS wird berechnet als 2 (Operationen pro FMA-Anweisung pro CUDA-Kern pro Zyklus) × Anzahl der CUDA-Kerne × Kerntaktrate (in GHz). Beachten Sie, dass Kepler wie die Fermi- Generation der vorherigen Generation nicht in der Lage ist, von der erhöhten Rechenleistung durch die doppelte Ausgabe von MAD + MUL zu profitieren, wie es Tesla war.

Die theoretische Double-Precision-Rechenleistung einer Kepler GK110/210-GPU beträgt 1/3 ihrer Single-Precision-Leistung. Diese doppelt präzise Verarbeitungsleistung ist jedoch nur auf professionellen Quadro- , Tesla- und High-End-TITAN-Marken- GeForce- Karten verfügbar , während Treiber für Consumer-GeForce-Karten die Leistung auf 1/24 der Leistung mit einfacher Präzision begrenzen. Die GK10x-Chips mit geringerer Leistung sind in ähnlicher Weise auf 1/24 der Einzelgenauigkeitsleistung begrenzt.

Kepler-Chips

  • GK104
  • GK106
  • GK107
  • GK110
  • GK208
  • GK210
  • GK20A ( Tegra K1 )

Siehe auch

Verweise