Werbung
In den vergangenen Tagen kam es vermehrt zu Beobachtungen, die von einem seltsamen Verhalten bei der Speicherzuteilung der GeForce GTX 970 sprachen. Im Vergleich zur GeForce GTX 980 soll die GTX 970 nicht die vollen 4.096 MB verwenden. Genauer unter die Lupe nehmen konnten aber auch wir das Problem nicht, da sich zwar identische Spiel-Szenen erstellen lassen, die auch eine unterschiedliche Nutzung des Grafikspeichers darlegen, dies aber auch ein Messfehler durch eben doch nicht 100-prozentig identische Settings sein könnte. Schon eindeutiger waren hier auffällige Performance-Einbrüche, aber auch diese lassen sich durch die unterschiedliche Leistung der beiden GPUs begründen. Eines stand jedoch fest: Die GeForce GTX 970 verhält sich seltsam, sobald mehr als 3,5 GB Grafikspeicher verwendet werden.
Ein 256 Bit breites Speicherinterface, das in vier 64-Bit-Controller unterteilt wird, haben beide Karten gemein, doch offenbar gibt es in dieser Thematik einige technische Unterschiede. Nun aber haben alle Käufer einer GeForce GTX 970 Gewissheit. NVIDIA bestätigt in einem Statement, dass der Speicher der GeForce GTX 970 anders adressiert und angesprochen wird, als dies bei der GeForce GTX 980 der Fall ist.
Unterschiede in der Speicherauslastung in Watch Dogs - GeForce GTX 970 (links) und GTX 980 (rechts) (Bild: Anandtech-Forum)
Grund dafür soll der unterschiedliche Aufbau in den SMM (Maxwell-Streaming-Multiprozessoren) sein. Die GeForce GTX 980 bzw. die dort verwendete GM204-GPU verwendet vier GPC (Graphics Processing Cluster) x 4 SMM x 4 SMM-Blöcke x 32 ALUs, was letztendlich den Ausbau von insgesamt 2.048 Shadereinheiten ergibt. Bei der GeForce GTX 970 sind es 13 SMM x 4 SMM-Blöcke x 32 ALUs = 1.664 Shadereinheiten. Aus den fehlenden SMM ergeben sich auch fehlende Hardware-Komponenten zum Speicher-Subsystem der GPU. Dies führt dazu, dass nur 3,5 oder 4 GB Grafikspeicher mit der vollen Geschwindigkeit angesprochen werden. NVIDIA verwendet hier zwei Partition, die eine 512 MB und die andere 3.584 MB groß. Wenn ein Spiel nur 3,5 GB oder weniger verbraucht, greift es auch nur auf die erste Partition zu. Werden mehr als 3,5 GB benötigt, kann die GeForce GTX 970 zwar auch diese ansprechen, allerdings nicht mit der vollen Geschwindigkeit und daher kommt es auch zu Performance-Unterschieden zwischen der GTX 970 und GTX 980, die nicht mit den mehr vorhandenen Shadern oder Textureinheiten zu begründen sind.
Unterschiede im Blockdiagramm der GeForce GTX 970 (links) und GTX 980 (rechts)
NVIDIA liefert dazu auch gleich einige Performance-Werte, die dies darlegen sollen:
Performance der GeForce GTX 970 | ||
---|---|---|
Spiel /Settings | GeForce GTX 980 | GeForce GTX 970 |
Shadow of Mordor | ||
<3,5 GB (2.688 x 1.512 Very High) | 72 FPS | 60 FPS |
>3,5 GB (3.456 x 1.944) | 55 FPS (-24%) | 45 FPS (-25%) |
Battlefield 4 | ||
<3,5 GB (3.840 x 2.160 2xMSAA) | 36 FPS | 30 FPS |
>3,5 GB (3.840 x 2.160 135% DSR) | 19 FPS (-47%) | 15 FPS (-50%) |
Call of Duty: Advanced Warfare | ||
<3,5 GB (3.840 x 2.160 FSMAA T2x) | 82 FPS | 71 FPS |
>3,5 GB (3.840 x 2.160 FSMAA T2x, Supersampling) | 48 FPS (-41%) | 40 FPS (-44%) |
Die Zahlen sollen darlegen, dass es sich nur um sehr kleine Unterschiede bei einer größeren Nutzung des Speichers handelt. Soweit können wir auch zustimmen, allerdings ist an dieser Stelle nun vielleicht nicht der Umstand als solches der Punkt, den viele Nutzer daran stört, sondern vielmehr die Tatsache, dass NVIDIA dies erst kommuniziert, als bereits Fakten durch die Nutzer geschaffen waren.
Das Statement von NVIDIA: "The GeForce GTX 970 is equipped with 4GB of dedicated graphics memory. However the 970 has a different configuration of SMs than the 980, and fewer crossbar resources to the memory system. To optimally manage memory traffic in this configuration, we segment graphics memory into a 3.5GB section and a 0.5GB section. The GPU has higher priority access to the 3.5GB section. When a game needs less than 3.5GB of video memory per draw command then it will only access the first partition, and 3rd party applications that measure memory usage will report 3.5GB of memory in use on GTX 970, but may report more for GTX 980 if there is more memory used by other commands. When a game requires more than 3.5GB of memory then we use both segments.
We understand there have been some questions about how the GTX 970 will perform when it accesses the 0.5GB memory segment. The best way to test that is to look at game performance. Compare a GTX 980 to a 970 on a game that uses less than 3.5GB. Then turn up the settings so the game needs more than 3.5GB and compare 980 and 970 performance again."
Gerne hätten wir noch etwas tiefergehende technische Erklärungen von NVIDIA zu dem Thema. Bisher ist nur das oben genannte Statement öffentlich. Technisch weniger versierten Anwendern mag dies auch genügen, wir aber versuchen in unseren Artikeln möglichst tief in das Thema einzusteigen und an dieser Stelle reicht uns die schlichte Erwähnung einer Limitierung nicht. Vor allem aber besteht bei NVIDIA Nachholbedarf in Sachen Kommunikation. Auch wenn die Auswirkungen auf die Leistung in der Praxis fast zu vernachlässigen sind, so bedarf es dennoch einer offenen Kommunikation zu diesem Thema. Wie man sieht, kann einem Unternehmen das Unterlassen einer solchen Limitierung sonst auf die Füße fallen - wie gerade geschehen.
Update:
Wir hatten inzwischen die Gelegenheit uns etwas ausführlicher mit diesem Thema zu beschäftigen und nach Rücksprache mit NVIDIA konnten wir einige Details klären. So bedauert man es bei NVIDIA, dass man diesen Umstand nicht direkt zum Launch der GeForce GTX 970 kommuniziert habe. Die Konzentration auf die GeForce GTX 980 habe dazu geführt, dass diese geringe Einschränkung beim Grafikspeicher unerwähnt bliebe und auch dem mehrmaligem Review durch das Marketing- und Technik-Team nicht aufgefallen sei.
Zunächst einmal ist es schwer sich auf Tools zu verlassen, deren genaue Funktionsweise man nicht kennt bzw. deren Programmierung eventuell fehlerhaft ist, so dass ein korrektes Auslesen von Speicher und Cache nicht immer möglich ist. Dies gilt auch für solche Tools, die bei der GeForce GTX 980 und GTX 970 den verbrauchten Speicher auslesen. Laut NVIDIA kommt es hier durch verschiedene Effekte bei der Adressierung von Speicher dazu, dass diese Werte nicht korrekt sind. Zu 100 Prozent sollte man sich in jedem Fall nicht darauf verlassen, was Aussagen wie "die GeForce GTX 970 spricht in manchen Fällen nur 3,5 GB Grafikspeicher an" schwierig macht.
Wir haben den Vormittag genutzt und versucht eigene Tests anzustellen, allerdings mit gemischten Ergebnissen. Ein eindeutiges Verhalten in Richtung merklich mangelnder Performance ab einer Speichernutzung von 3,5 GB lässt sich nicht darstellen. Zu unterschiedlich sind auch die Anzeigen der Tools bei mehrfacher Wiederholung. Es fehlen einfach die Tools zur genauen Verifizierung und hier müssen wir NVIDIA nun in die Pflicht nehmen weitere Daten zu liefern.
Auch CUDA-Tools bzw. Programme die auf die CUDA-Schnittstelle zugreifen eigenen sich nur bedingt zur Feststellung eines Limits. Der Programmierer eines dieser Tools, dass an dieser Stelle immer wieder gerne herangezogen wird, hat bereits bestätigt, dass sein Tool keinerlei Aussage über den Verbrauch oder eine Bandbreite über den Speicher treffen kann: "Mein Benchmark sagt nicht aus, was ihr glaubt, dass es aussagt. Es eignet sich *NICHT* um das Vorhandensein eines VRAM-Fehlers nachzuweisen."
Auch der angeblich nur 1.792 kByte große L2-Cache, obwohl die GM204-GPU 2.048 kByte zur Verfügung hat, ist offenbar ein Auslesefehler eben dieser CUDA-Tools. Laut NVIDIA verfügt die GeForce GTX 970 über voll adressierbare 4 GB GDDR5-Grafikspeicher und 2 MB L2-Cache. Das die 4 GB Grafikspeicher bei der GeForce GTX 970 in 3.548 MB und 512 MB Bereiche aufgeteilt sind, bestätigte man noch einmal offiziell. Gründe für ein langsameres Ansprechen des 512-MB-Bereichs nennt man nicht konkret, sondern spricht nur davon, dass das fehlen von SMM dafür verantwortlich sei. Aufgrund der Zeitverschiebung beginnt das US-Team gerade erst mit der Arbeit und vielleicht wird man weitere technische Hintergründe liefern.
Der Treiber versucht Spiele innerhalb des 3,5-GB-Limits zu belassen und gibt die zusätzlichen 512 MB nur im Notfall frei, so NVIDIA. Man bleibe aber dabei, dass die vollen 4 GB ansprechbar sind und damit von Spielen genutzt werden können. Bei eventuellen Performance-Einbrüchen verweist man auf die oben genannten Zahlen, die sich bei 1-4 Prozent bewegen. Größere Performance-Nachteile sollen sich durch die Speicherteilung nicht ergeben und sind dann durch die Unterschiede innerhalb der Architektur begründet (weniger Shader etc.).
MSI hat uns in einer Mail mitgeteilt, dass man ein BIOS für die GeForce GTX 970 Gaming 4G veröffentlicht habe, die das Problem beheben soll. Auf Rückfrage konnte man uns noch nicht sagen, wie dies der Fall sein soll. NVIDIA bestreitet außerdem, dass es einen direkten Zusammenhang gibt. Die langsamere Adressierung des 512-MB-Bereichs lässt sich laut NVIDIA nicht durch ein BIOS-Update beheben, da dies eine Limitierung der Architektur sein, die sich mit Software nicht aufheben lässt.
Festzuhalten also bleibt, dass die GeForce GTX 970 über 4 GB Grafikspeicher verfügt und diese auch genutzt werden können. Eventuelle Performance-Nachteile aufgrund der langsameren Adressierung des 512 MB großen Teilbereiches müssen aber noch ausführlicher beleuchtet werden. Hier steht auch NVIDIA in der Pflicht noch weitere Werte zu liefern. Wünschenswert wäre außerdem eine genaue technische Erläuterung der grundsätzlichen Problematik, allerdings verweist NVIDIA darauf, dass man eventuell nicht weiter ins Detail gehen könne, da sonst spezielle Funktionsweisen der Architektur verraten würden. Wohl größter Fehler ist und bleibt die fehlende Kommunikation über diesen Umstand und es bleibt zu hoffen, dass NVIDIA, sollte eine ähnliche Situation auftreten, anders reagiert.
2. Update:
MSI hat inzwischen auf unsere Nachfrage reagiert: "[Das BIOS-Update] sorgt nur für eine korrekte Erkennung von 4 GB Grafikspeicher in verschiedene Applikationen. Hier kam es z.T. auf Grund der Speicheraufteilung zu falschen Anzeigen des Gesamtspeichers."
Dies würde zumindest erklären, warum so viele unterschiedliche Ergebnisse zur Auslastung des Speichers im Umlauf sind. Offenbar sorgen verschiedenen Implementationen der Erkennung dafür, dass hier unterschiedliche Angaben gemacht werden. Unklar ist noch, welche weiteren Modelle betroffen sind bzw. welche bereits ohne BIOS-Update korrekt auslesen.
3. Update:
PC Perspective hat ein Gespräch mit Jonah Alben, Senior Vide President des GPU-Engineering-Teams geführt. Darin wurden auch einige technische Details geklärt, die den Zusammenhang und das Zusammenspiel von Grafikspeicher, Cache, den SMMs und der sogenannten Crossbar, die letztendlich für die Anbindung der Shader an den Speicher sorgt, besser erläutern.
Das von Jonah Alben erstellte Bild stellt dies am deutlichsten dar. Die GeForce GTX 970 verfügt über 13 aktive SMMs, die jeweils über 128 Shadereinheiten verfügen. Dies ergibt die insgesamt 1.664 Shadereinheiten der GM204-GPU. In den bisherigen Blockdiagrammen nicht zu finden war und ist die Crossbar, die für die Verbindung zwischen den Shadern sowie dem L2-Cache bzw. den Speichercontrollern sorgt. Insgesamt wird diese Verbindung über acht Ports hergestellt. Durch das Abschalten eines SMMs im Vergleich zur GeForce GTX 980 wird auch einer dieser Ports deaktiviert. Dies wirkt sich auch auf die Anzahl der Render Backends und die L2-Cache aus.
Modell | GeForce GTX 980 | GeForce GTX 970 |
---|---|---|
GPU | Maxwell (GM204) | Maxwell (GM204) |
Fertigung | 28 nm | 28 nm |
Transistoren | 5,2 Milliarden | 5,2 Milliarden |
Shadereinheiten | 2.048 | 1.664 |
Textureinheiten | 128 | 104 |
Render Backends | 64 | 56 |
L2-Cache | 2.048 kB | 1.792 kB |
Speicherausbau | 4 GB | 4 GB |
Speichercontroller | 256 Bit | 224+32 Bit |
Speicherbandbreite | 224 GB/s | 224 GB/s |
Die GeForce GTX 970 verfügt also über weniger Render Backends (ROPs) und L2-Cache, als ursprünglich kommuniziert. Anstatt 64 sind es also 56 ROPs und anstatt eines 2.048 kB großen L2-Caches sind es 1.792 kB. Die SMMs sind trotz der reduzierten Anzahl der ROPs einer der limitierenden Faktoren, denn egal wie viele ROPs am Ende zur Verfügung stehen, die GPU kann über die SMMs nur 52 Pixel pro Takt berechnen und die ROPs geben in diesem Falle, wenn jeder SMM über acht ROPs verfügt, 56 Pixel pro Takt aus. Die Speicherbandbreite wird hier dennoch weiterhin mit 224 GB pro Sekunde angegeben, da dies immer noch das Maximum darstellt, was zwischen GPU und Grafikspeicher ausgetauscht werden kann.
Jeder Block an L2-Cache und ROPs kommuniziert mit einem 32 Bit breiten Speicherinterface, welches wiederum an 512 MB an Grafikspeicher angebunden ist. Anders als bei der "Kepler"-Architektur ist NVIDIA bei "Maxwell" in der Lage bestimmte Bereich des L2-Cache und auch ROPs zu deaktivieren, ohne das dazugehörige Speicherinterface abzuschalten. Dies hat aber zur Folge, dass über nur einen offenen Port an der Crossbar nun zwei 32-Bit Teilbereiche des Speichercontrollers angesprochen werden müssen.
Typische Speicherzugriffe erfolgen über die komplette Breite des Speicherinterfaces, was bei der GeForce GTX 980 gleichmäßig möglich ist, da SMMs und L2-Cache/ROP-Blöcke gleichmäßig angebunden sind. Bei der GeForce GTX 970 verhält sich dies nun anders. Der 7. Port der Crossbar ist für doppelt so viel Speicher zuständig, wie die übrigen sechs aktiven Ports. In einer Queue von Speicheranfragen müsste die Architektur also bei hoher Last immer wieder auf diesen 7. Port warten, der doppelt so lange braucht die gleiche Menge an Speicher zu beschreiben, als dies bei den anderen Ports der Fall ist.
Dies ist der Grund, warum NVIDIA den Speicher in 3.584 und 512 MB aufgeteilt hat. Die Speicherzugriffe über die Crossbar sind bei 3,5 GB gleichmäßig verteilt. Werden mehr als 3,5 GB benötigt, erfolgen auch Zugriffe auf den 512-MB-Teilbereich, der aber nur über einen Port angesprochen werden kann.
Der vielzitierte Benchmark von Nai stellt die grundsätzliche Problematik schön dar, allerdings entsprechen die Zugriffe auf dem Speicher nicht dem, wie ein Spiel oder das Betriebssystem ihn verwendet. Einfach gesprochen werden hier plump große Datenmengen in den Speicher geschrieben - wie gesagt, sie zeigen den Effekt durch die Beschneidung der Crossbar, mehr jedoch nicht. Die Speicherzuweisen in echten Praxisanwendungen folgen einem heuristischen Muster, das wiederum bestimmten Vorgaben folgt. Dies macht auch ein Nachstellen der Auslastung etc. nicht ganz einfach, da selbst zwei identische Benchmark-Durchläufe unterschiedliche Ergebnisse produzieren können. Zudem werden Daten im Speicher ständig hin und her geschrieben, je nachdem wie wichtig sie sind, ob es sich um komprimierte Daten handelt usw. Auch dies ist kein festgeschriebenes Schema, sondern ein heuristisches Muster, dass in den seltensten Fällen immer gleich ist.
Wie sehen Speicherzugriffe auf einer GeForce GTX 970 (und allen anderen Grafikkarten generell) nun aus? Das Betriebssystem und der Treiber können auf unterschiedliche Speicher-Pools zurückgreifen. Caches, Grafikspeicher und Speicher, der über das PCI-Express-Interface zur Verfügung gestellt wird. Aufgrund der Bandbreiten von Cache, Grafikspeicher und weiteren Speichers entspricht dies auch einer Art Priorisierung der Speichertypen. Daten die schnell zur Verfügung stehen müssen, liegen im Cache. Der ebenfalls sehr schnell angebundene Grafikspeicher hält weitere Daten vor und tritt der Fall sein, das Daten ausgelagert werden müssen, dann werden diese über das PCI-Express-Interface in den Arbeitsspeicher übertragen und von dort wieder gelesen. Selbst der langsamere 512-MB-Teilbereich der GeForce GTX 970 ist noch immer um ein Vielfaches schneller, als die Anbindung über PCI-Express. NVIDIA sieht diese Priorisierung natürlich auch im Treiber vor und so steht der Cache vor dem 3,5-GB-Teilbereich und dieser wieder vor dem 512-MB-Teilbereich. Als letzte Möglichkeit Daten auszulagern hergenommen wird der per PCI-Express angebundene Speicher.
Für Spieler wichtig ist natürlich die Frage nach dem Performance-Einbruch, wenn die zusätzlichen 512 MB verwendet werden. Diese Frage lässt sich nur mit einem "kommt darauf an" beantworten. NVIDIAs eigene Benchmarks sehen einen niedrigen einstelligen Prozentbereich für diesen Fall. Doch auch dies sind bestimmte Szenarien und andere Spiele mit anderen Settings können aufgrund der Freiheiten der Speicherzuteilung schon wieder anders aussehen. Weder wir als Presse, noch die Nutzer haben die Möglichkeit eine GeForce GTX 970 mit und ohne diesem L2-Cache/ROP-Block zu testen.
Im Grunde gibt es drei Szenarien, die interessant sind:
1. Werden weniger als 3,5 GB benötigt, verhält sich die Karte bzw. die Speicherzuweisung normal.
2. Werden mehr als 4 GB benötigt, läuft die GeForce GTX 970 in die gleiche Problematik, wie jede andere Karte mit 4 GB Grafikspeicher auch.
3. Der interessante Bereich ist, wenn zwischen 3,5 und 4 GB Grafikspeicher benötigt werden. Eben diesen werden wir uns in den kommenden Tagen etwas genauer anschauen.
Was bedeuten diese Erkenntnisse für die GeForce GTX 970 und eventuelle Anschaffungspläne? Nicht viel, denn die Leistung der GeForce GTX 970 stellt sich nicht anders dar, nur weil ein Teil des Speichers nicht so schnell angesprochen wird, wie der weitaus größere Teil. Was wir NVIDIA aber definitiv vorwerfen können, ist die Tatsache, dass man dies nicht offen kommuniziert hat. Warum sind die jetzt erlangten Erkenntnisse und technischen Details nicht schon mit dem Launch der GeForce GTX 980 und GTX 970 an die Presse herangetragen worden, damit diese es den Leser erläutern kann? Mit fehlender interner Kommunikation lässt sich dies kaum erklären, zu offensichtlich ist die technische Auslegung der GeForce GTX 970 daraufhin ausgerichtet eine Speicherbelegung über 3,5 GB zu minimieren.
Ein Beispiel aus der Vergangenheit zeigt, dass es auch anders geht. Auch die GeForce GTX 550 Ti und GTX 660 Ti sprachen ihren Speicher unterschiedlich an. Ein 192 Bit breites Speicherinterface kümmerte sich um 2 GB Grafikspeicher. 128 Bit kümmerten sich um 1,5 GB Grafikspeicher und die weiteren 64 Bit um die restlichen 512 MB Grafikspeicher. Damals wurde dies offen kommuniziert und am Ende interessierte man sich nur noch für die Performance - wäre NVIDIA bei der GeForce GTX 970 ebenfalls diesen Weg gegangen, hätte sich dies sicherlich ebenso dargestellt.
4. Update:
Über sein eigenes GeForce-Forum hat NVIDIA angekündigt, dass man an einem Treiber-Update arbeite, welches die Speicherzuweisungen optimieren soll. Natürlich wird man nichts an der architektonischen Struktur der GeForce GTX 970 ändern können, vielleicht aber findet man noch etwas Optimierungspotenzial bei der Zuweisung von Speicher - besonders im Grenzfall von 3,5 bis 4 GB. Genaue Details verrät NVIDIA aber auch in diesem Post noch nicht.
"Hey,
First, I want you to know that I'm not just a mod, I work for NVIDIA in Santa Clara.
I totally get why so many people are upset. We messed up some of the stats on the reviewer kit and we didn't properly explain the memory architecture. I realize a lot of you guys rely on product reviews to make purchase decisions and we let you down.
It sucks because we're really proud of this thing. The GTX970 is an amazing card and I genuinely believe it's the best card for the money that you can buy. We're working on a driver update that will tune what's allocated where in memory to further improve performance.
Having said that, I understand that this whole experience might have turned you off to the card. If you don't want the card anymore you should return it and get a refund or exchange. If you have any problems getting that done, let me know and I'll do my best to help.
--Peter"
5. Update:
An der Situation rund um die GeForce GTX 970 hat sich auch im Laufe des Wochenendes nichts getan und so wird das Thema weiterhin heiß diskutiert. Die Händler haben inzwischen ihre Positionen bezogen und im dazugehörigen Thread teilt ihr eure Erfahrungen. Neben der einfachen Rückerstattung scheint sich in den USA aber größeres Ungemacht für NVIDIA anzubahnen. So sucht die Anwaltskanzlei Bursor & Fischer nach konkreten Hinweisen auf die Limitierungen des Speichers, um daraus eine Sammelklage der betroffenen zu verfassen. Käufern in den USA stehen also gleich mehrere Optionen offen und auf NVIDIA könnten größere Schadenersatzzahlungen zukommen.