Werbung
NVIDIA hat für seine "Maxwell"-Architektur die wichtigsten Pfeiler aus "Kepler" genommen und in einigen Bereichen überarbeitet. Bisher hat man sich aber hinsichtlich der Details größtenteils zurückgehalten und nur wenige Bereiche der neuen Architektur angekratzt. In einem Blogpost werden einige der wichtigsten Änderungen nun noch einmal genannt sowie weitere Details verraten.
Doch zuvor noch einmal ein kleiner Rückblick auf das, was wir schon wissen: Die mit "Kepler" eingeführten SMX-Cluster mit 192 Shadereinheiten (CUDA-Kerne) werden neu angeordnet. Grund hierfür ist die Tatsache, dass eine Control Logic für 192 Shadereinheiten sehr komplex konstruiert werden muss. Mit "Maxwell" wird der Streaming-Multiprozessor, in der Folge auch SMM (Maxwell Streaming Multiprozessor) genannt, in vier Blöcke zu jeweils 32 Shadereinheiten aufgeteilt. Insgesamt stehen als pro SMM 128 Shaderheinheiten zur Verfügung. Die weniger komplexe Control Logic sorgt auch dafür, dass einzelne Aufgaben effizienter an die Kerne verteilt werden können. Dies sorgt auch dafür, dass ein einzelner Shader bis zu 35 Prozent schneller arbeitet als sein Pendant auf "Kepler"-Basis. Dabei ist die Chipfläche von 118 auf 148 mm2 um 25 Prozent angewachsen. Gleichzeitig steigt die Anzahl der Transistoren von 1,3 auf 1,87 Milliarden, was einem Plus von 49 Prozent entspricht. Hier wird am deutlichsten, was die Umbauten im Chipdesign für Auswirkungen haben. Im Vollausbau lassen sich 66 Prozent mehr Shadereinheiten unterbringen.
[figure image=http://www.hardwareluxx.de/images/stories/galleries/reviews/2014/maxwell-launch/maxwell-kepler-1-rs.jpg link=http://www.hardwareluxx.de/images/stories/galleries/reviews/2014/maxwell-launch/maxwell-kepler-1.jpg alt=Kepler gegen Maxwell]Kepler gegen Maxwell[/figure]
[h3]Instruction Scheduling[/h3]
Um auch den einzelnen Shader effektiver zu machen, hat NVIDIA einige Veränderungen beim "Workload Balancing", der "Clock-Gating Granularity", dem "Instruction Scheduling" und den "Instructions Issued per Clock Cycle" vorgenommen. Letztgenannter Punkt ist zwar im Vergleich zu "Fermi" und "Kepler" identisch geblieben, allerdings hat NVIDIA die Latenzen reduziert um die Effektivität zu steigern. Das bessere "Workload Balancing" gelingt unter anderem durch eine andere Aufteilung durch die "Warp Scheduler". Zwar sind auch weiterhin vier "Warp Scheduler" pro SMM vorhanden (wie auch bei den SMX-Clustern in der "Kepler"-Architektur), allerdings teilen sich die vier "Warp Scheduler" nicht mehr auf alle Shadereinheiten auf, sondern sind fest bestimmten Shadern zugeordnet (angepasst an die jeweilige Weite des "Warp Scheduler"). Weiterhin sind die "Warp Scheduler" in der Lage, sowohl mathematische Operationen an die Shader weiterzuleiten als auch Speicher-Operationen an die "Load/Store-Units" zu liefern. Allerdings ist es dem "Warp Scheduler" nur möglich, bei einer Art Operation alle Shadereinheiten auszulasten.
[h3]Bessere Auslastung bei bestehendem Code[/h3]
Oben genannte Anpassungen sind ausschließlich auf eine bessere Anpassung der Hardware zurückzuführen. Schlechter Code kann aber weiterhin dazu führen, dass die Architektur ihre Vorteile nicht ausspielen kann. Geht man allerdings davon aus, dass sich bestehender Code nicht ändert, hat NVIDIA dennoch weitere Verbesserungen an den Registern vorgenommen. Keinerlei Unterschiede gibt es bei "Maxwell" und "Kepler" in den 64k 32-Bit Registern, den 64 Warps sowie den maximalen Registern pro Thread von 255. Verdoppelt hat sich die Anzahl der aktiven Thread-Blöcke pro Streaming Multiprozessor auf insgesamt 32. Dies dürfte sich vor allem dann positiv auswirken, wenn ein kleiner Thread 64 oder weniger Blöcke belegt.
[h3]Dedicated Shared Memory[/h3]
Sowohl "Maxwell" als auch "Kepler" verfügen über 64 kB Shared Memory. Allerdings teilt sich dieser bei "Kepler" zu 48/16 kB zwischen dem L1-Cache und einem Cluster-weiten Shared Memory auf. Bei "Maxwell" sind L1-Cache und Texture-Cache in einer Einheit vereint, wobei das Limit pro Thread-Block in der Belegung weiterhin bei 48 kB liegt.
Gegenüberstellung von "Kepler"- und "Maxwell"-Architektur | ||
---|---|---|
GPU | GK107 | GM107 |
Maximale Anzahl an Shader-Prozessoren | 384 | 640 |
Basis-Takt | 1.058 MHz | 1.020 MHz |
Boost-Takt | - | 1.085 MHz |
GFLOPs | 812,5 | 1305,6 |
Compute-Schnittstelle | 3.0 | 5.0 |
Shared Memory / SM | 16 kB / 48 kB | 64 kB |
Register File Size | 256 kB | 256 kB |
Active Blocks / SM | 16 | 32 |
Textureinheiten | 32 | 40 |
Texelfüllrate | 33,9 GTexel/Sek. | 40,8 GTexel/Sek. |
Speichertakt | 1.250 MHz | 1.350 MHz |
Speicherbandbreite | 80 GB/Sek. | 86,4 GB/Sek. |
ROPs | 16 | 16 |
Größe L2-Cache | 256 KB | 2.048 KB |
Anzahl der Transistoren | 1,3 Milliarden | 1,87 Milliarden |
Chip-Größe | 118 mm2 | 148 mm2 |
Fertigung | 28 nm | 28 nm |
TDP | 64 Watt | 60 Watt |
Um diesen Shared Memory weiterhin effizient nutzen zu können verfügt "Maxwell" über einige sogenannte "Atomic Operationen" für 32-Bit-Integer-Operationen und "Native Shared Memory 32 Bit and 64 Bit compare-and-swap (CAS)"-Operationen. Diese mussten bei "Kepler" und "Fermi" noch über ein kompliziertes "Lock/Update/Unlock"-Prinzip abgearbeitet werden und belegten daher deutlich mehr Platz im Speicher.
[h3]Dynamic Parallelism[/h3]
Befehle und Daten, die an die GPU geliefert werden, können verschachtelt aufgebaut sein (beispielsweise wenn Berechnungen von den Ergebnissen anderer Berechnungen abhängig sind) und somit die verschiedenen Threads der GPU über eine bestimmte Laufzeit blockieren. NVIDIA versuchte dem über Optimierungen in der CUDA-Schnittstelle entgegen zu wirken.
[figure image=images/stories/newsbilder/aschilling/2014/nvidia-dynamic-parallelism-rs.png link=images/stories/newsbilder/aschilling/2014/nvidia-dynamic-parallelism.png alt=Dynamic Parallelism]Dynamic Parallelism[/figure]
Mit dem "Dynamic Parallelism" kann die GPU selbst diese Verschachtelungen auflösen. Dies sorgt allerdings auch für etwas mehr Programmieraufwand, denn der Programmierer muss nun beachten, dass die GPU sich nicht selbst den Speicher volllaufen lässt. Sollte es dazu kommen, dass die selbst angelegten Threads den freien Speicher der GPU überschreiten, werden die Daten über die PCI-Express-Schnittstelle ausgelagert, was den gesamten Prozess wiederum verlangsamt. Die GPU bestimmt dabei selbst, in wie weit sie die Verschachtelung zulässt. NVIDIA will und kann keine Raster vorgeben, da man damit auch die Leistung in ungünstigen Szenarien einschränkt.
Ende März wird in San Jose die GTC 2014 stattfinden. Wir hoffen dann noch etwas mehr über "Maxwell" zu erfahren bzw. weitere Erläuterungen zu bekommen.