Speicheranbindung bei Grafikkarten

zeedy

Commodore
Registriert
Dez. 2012
Beiträge
4.241
Hallo,
Ich wollte mal fragen, wie der Speicher bei Grafikkarten angebunden wird. So wie ich das verstehe können zB an einem 128 bit Interface nur 4 oder 8 GB hängen, weil es 4 32bit Speicherkontroller gibt. Warum werden denn bei der 5600XT gleich 2 Controller abgeschaltet, wäre es da nicht möglich mit einem 224 bit breiten Interface 7 GB anzubinden?

Und wie ist es bei der Xbox SX möglich, dass die GPU ein 320 bit Interface hat, 10 GB aber mit 560 GB/s angebunden werden, und die restlichen 6 mit 336 GB/s?
 
Diese Abstufungen kommen ja durch die Größe der Speicherbausteine zusammen (also welche Anbindung und Kapazität sie haben)

zeedy schrieb:
die restlichen 6 mit 336 GB/s
Die sind dann nur mit 192 Bit angebunden. Ist in etwa so wie wenn man auf einem Mainboard mit Dual-Channel 3 Speichermodule verbaut. Es gab auch schon mal ne NVidia Karte mit so einer Anbindung (nein, nicht die 970, da wars ja noch spezieller... das war noch davor und auch offen kommuniziert)

Die 7GB bei der 5600XT wären wohl auch möglich gewesen aber wohl aufgrund von Kosten und Produktpolitik nicht gewollt.
 
  • Gefällt mir
Reaktionen: zeedy und Baal Netbeck
@Jesterfox:
550ti und 660(ti) hatten ein 192bit-SI und 1GB bzw 2GB speicher. bei der 660(ti) gab es allerdings auch partnerkarten mit 3GB.
 
Du hast idR. eine bestimmte Anzahl an Speichercontrollerchips, die den Speicher mit 32bit anbinden. Für ein 192 bit breites Interface werden dann 6 Controllerchips verwendet. Bei 128bit 4 Controller, bei 384bit eben 12 Controllerchips. Wie breit der Bus maximal sein kann, bestimmt die GPU.

Jeder Controllerchip kann mit einer bestimmten Menge an Speicher umgehen. Meistens gilt: Ein Controller, ein Chip, da man so Bandbreite kosteneffizient nutzt. Manchmal geht es aber nicht nur darum, Bandbreite kosteneffizient zu nutzen, manchmal geht es auch darum, Speicher kosteneffizient zu verbauen.

Bei der kommenden XBox werden wohl aus Kostengründen auf die 10 Controllerchips 6 2GB-Chips und 4 1GB-Chips verteilt. So kommen auch die "2 Speicher" zustande. Denn an allen 10 Controllerchips hängt jeweils 1GB Speicher mit 14Gbps Geschwindigkeit -> 560GB/s. Aber da nur 6 2GB-Chips verbaut sind, hängen sozusagen 6GB nur an 6 Speicherchips -> 336 GB/s. Hier scheint Microsoft die hohe Bandbreite bei moderatem Stromverbrauch wichtig gewesen zu sein, der Speicherausbau aber Zweitrangig. Man hätte auch direkt 20GB RAM verbauen können und den komplett mit 560GB/s anbinden. Aber die 2GB-Chips sind teurer. Bei einem engen Preiskorsett wie bei Spielekonsolen kann das schon einen Unterschied ausmachen.

Technisch gelten die Bandbreiten erst, wenn du den Speicher auslastest. Wenn du quasi immer nur denselben Speicherblock beschreiben würdest, dann hättest du auch nur die Anbindung eines Chips mit 32 bit. Also könntest du bei Speicherbausteinen mit 14Gbps dann "nur" mit 56GB/s lesen und schreiben, selbst wenn der Speicher mit 2TB/s angebunden wäre. Aber aufgrund dessen, wie Grafikkarten arbeiten, ist der Speicher eigentlich immer auf die Chips verteilbar, weshalb dieser theoretische Bottleneck praktisch nie auftritt.

Und natürlich: Ja, es wäre möglich, der RX 5600 XT 7GB zu verpassen und nur einen Controller abzuschalten. Aber dann wird die Karte wieder teurer und kann sich schlechter von der RX 5700 abgrenzen. Politisch ist sowas nicht gewollt.
 
@SoDaTierchen meinst du mit Speichercontrollerchips einfach die 32 bit Controller in der GPU oder die Speichermodule? Denn an einen 384 bit breiten Speicherkontroller können auch nur 3 Speicher angebunden sein.

Und wie können bei der neuen Xbox an allen 10 "Controllerchips" jeweils 1 GB hängen, wenn du selbst schreibst die Konsole hat nur 4 1GB Module? Ich vermute, dass 4 1GB Module und 1 2GB an 192bit angebunden sind, und die restlichen 5 2GB Module an alle 10 Controller 🤔
 
An den 10 Controllereinheiten hängen jeweils mindestens 1GB. So ein Speichermodul/-Chip ist selber auch mit 32 Bit angebunden (somit ist es nicht möglich nur 3 Module an einen 384Bit Speicherbus anzubinden, jedenfalls nicht ohne ihn künstlich zu begrenzen). Damit haben 4 Controller 1GB an Speicher dran hängen und die restlichen 6 eben 2GB.
 
  • Gefällt mir
Reaktionen: zeedy
@zeedy: Speichercontrollerchips = 32 bit Controller.
So wie Jesterfox schon sagte: Es hängt an jedem Chip ein Speicherbaustein. 6 Speicherbausteine sind 2 GB groß, 4 Speicherbausteine sind 1GB groß, aber insgesamt 10 Bausteine für alle 10 Chips. Damit können die ersten 1GB jedes Speicherbausteins von 10 Controllern angesprochen werden, also mit 320 Bit Busbreite. Die zweiten 1GB jedes Speicherbausteins können nur noch von 6 Controllern angesprochen werden, da nur 6 Bausteine ein zweites GB haben -> 192 Bit Busbreite.

Denkbar ist natürlich auch, dass statt 2GB-Modulen einfach 2 1GB-Module an den 6 Controllern hängen und so insgesamt 16 1GB-Module verbaut sind. Das wäre aber Platzverschwendung und ich glaube auch nicht, dass sich daraus finanzielle Vorteile ergeben. Sieh deshalb meine Einschätzung zur XBox nicht als Wahrheit, sondern als Möglichkeit.

Ein 384 Bit breites Speicherinterface mit nur 3 Speicherbausteinen ist entweder ineffizient, oder verwendet 128 Bit breite Wörter. Das ist denkbar, wird aber bei keiner GDDR-GPU so verwendet, da GDDR eine fixe Busbreite von 32 Bit hat.

Offtopic: Ein 384 Bit breites Interface für GDDR6-Speicher ist übrigens wegen der fixen Busbreite auf 48 GB Speicher begrenzt, 4 GB pro 32Bit-Kanal. Wollen wir dieses Limit irgendwann umgehen, müssen entweder mehr Controller oder eine modernere Speicherarchitektur her. HBM wäre hier ein tauglicher Ansatz, der aber auch sehr kostenintensiv ist.
 
  • Gefällt mir
Reaktionen: zeedy
Okay, dass jeder Speicherchip mit 32 bit angebunden wird und dadurch an einer 320 bit Schnittstelle 10 Chips hängen, leuchtet ein. Heißt das, dass maximal 1GB von einer 32bit Controllereinheit angesprochen werden kann? Sonst würden ja alle 16GB mit 320bit angebunden sein? 🤔

Wie sieht es denn bei HBM aus? Hat Vega 64 wirklich 64 32bit Controller? Wie werden die 8GB da angebunden?
 
zeedy schrieb:
Heißt das, dass maximal 1GB von einer 32bit Controllereinheit angesprochen werden kann?
Nein, manche haben ja auch 2GB dran hängen.

Und das mit 16GB an 320 Bit geht so nicht... stells dir als Mainboard mit RAM-Slots vor: jeder 32 Bit Controller ist quasi ein Speicherchannel der seine eigenen 32 Bit angebundenen Slots hat. 10 Controller (und damit quasi ein 10-channel statt Dual- oder Quad-Channel System) bedeutet also 10 oder 20 Slots (je nach dem ob man pro Controller 1 oder 2 Slots verbaut, ist ja bei den Mainboards auch beides verbreitet). Und jetzt hast du eine Ansammlung an 1GB und 2GB Modulen und sollst 16GB bestücken. Wie würde das am sinnvollsten gehen?

Du kannst einmal alle 10 channels mit 1GB bestücken und hast dann noch 6 weitere Module die rein müssen... die lassen sich aber nicht auf 10 Slots verteilen und damit sind für das 2GB nicht mehr alle channels bestückt.


Bei HBM2 hat ein Stack eine Anbindung von 1024 Bit, von daher würd ich drauf tippen das Vega zwei 1024 Bit breite Controller hat (und die R7 vier Stück) da die Vega ja zwei 4GB große HBM Stack besitzt (und die R7 derer vier)
 
Ein 32 Bit-Controller kann maximal 4GB ansprechen. Ob er dabei mit 4 1GB-Chips spricht oder mit einem 4GB-Chip oder gar mit 32 128MByte-Chips hängt von den Chips und dem konkreten Speichercontroller ab. Wobei letzteres aus Platz-Gründen Unfug ist, wenn du damit 16GB erreichen möchtest, dann kannst du ne Wand tapezieren. Wichtig: Er kann pro Operation immer nur mit einem Speicherchip sprechen. Es gibt also keine technischen Vorteile von 2 Chips gegenüber einem. Es hat nur Kostenvor- oder -Nachteile, da größere Chips teurer sind, kleinere aber mehr Fläche brauchen.
Der Vergleich von Jesterfox mit den Slots ist ziemlich gut, wenn man sich das an einem anderen Beispiel besser ausmalen kann.

HBM hat eine Busbreite 1024 Bit pro Stapel, wobei sich das in 8 asynchrone Kanäle von je 128 Bit aufteilt. Üblich sind pro DRAM-Chip 2 Kanäle und auf einem Stapel 4 Chips. Auf der Vega sind einfach 2 4GB-Stapel mit je 4 1GB-Chips verbaut, weshalb die 2048 Bit Busbreite zustande kommen. Wichtig für HBM: Es ist Stapelspeicher. Chips werden hier nicht nebeneinander, sondern übereinander verbaut. Die "Chips", die Nebeneinander gebaut werden, heißen hier Stapel. Das HBM-Speicherinterface ist erheblich simpler und wird nicht über das BGA-Package sondern über TSV-Verbindungen angebunden. Daher kann man hier nicht von "2 Speichercontrollern" reden. Der Speichercontroller der Vega kann einfach mit 4 Stapeln umgehen, wobei auf Vega-GPUs nur 2 verbaut sind.
 
Zurück
Oben