Gpu zwingen den Ram statt Vram zu nutzen?

Piktogramm schrieb:
Wenn in deinem Modell nun die GPU Speicher anfordert, dieser Anforderung über den PCIe controller der Grafikkarte geht, im PCIe Controller der CPU landet, über den Speichercontroller der CPU geht, beim Speicher ankommt und die Daten daraufhin den selben Weg wieder zurückgehen... Die Latenz ist dann derart hoch, dass die GPU nur um auf die Daten zu warten einige tausend bis zehntausend Takte nichts zu tun hat. Der reinste Horror!

Sorry damit liegst du nun auch daneben..

Grafikkarten die per PCIe angebunden sind haben direkte Lese und Schreibrechte im RAM genauso wie die CPU selber. Nur das der Speichercontroller halt in die CPU gewandert ist ^^ und nicht mehr wie am Anfang auf dem Mainboard.

Da wird nix vertrödelt unterwegs weil an 5 Stellen man sich hinstellen muss und wartet. Und besonders nicht Tausende Zyklen.

sorry PCI Latency war falsch.
 
Zuletzt bearbeitet:
Per PCIe angebundene Geräte können zwar generell per DMA kommunizieren, aber die Zugriffe müssen trotzdem über alle Controller hinweg verarbeitet werden. Der PCIe Slot ist eben nicht direkt mit dem RAM verbunden sondern es liegt allerhand Logik in Form von Controllern dazwischen. Die schiere Inkompatiblität der Schnittstellen macht dies ebenso erforderlich wie der Fakt, dass die Zugriffe auf den ganzen Busen mit Logik verwaltet werden muss, da es logischerweise ja nicht zu Kollisionen kommen darf ;).
 
Und zu welcher Kollision soll es denn kommen?

1. Das BIOS legt fest welcher Bereich RAM für CPU und GPU vorrätig ist.

Da kollidiert nix .

Überleg nochmal was DMA wirklich heist ... besonders das DIREKT !
 
Eben um die potentiellen Kollisionen zu vermeiden muss es Logik/Controller geben. DMA Controller um genau zu sein, egal wie man es dreht, dass Ding braucht für seine Arbeit einige Takte* und ist in der ganzen Übertragungskette nicht allein. Der DMA Controller allein reist es ja nicht, Speichercontroller (in der CPU), der Controller für die PCIe Kommunikation (in CPU und in der GPU) etc. pp. brauchen alle Zeit für Ihre Arbeit. Da kommen dann solche Späße dazu, dass die verschiedenen Bussysteme unterschiedliche Taktraten haben, unterschiedliche Kodierungen etc. pp.
Ich bleib dabei, für die gesamte Kette wird (verlgeichsweise) viel Zeit bgebraucht und von ner Anfrage der GPU über den Arbeitsspeicher der CPU wieder zurück vergeht für die GPU einige tausend Arbeitstakte völlig ungenutzt. Wobei Controller/Logik da ihren Anteil dran haben wie wie auch die puren Signallaufzeiten.


*deutlich Schneller als der Umweg über die Register der CPU ist es allemal


Was du mit dem Bios schreibst. Ich meine hypothetische, zeitliche Kollisionen und nicht die Kollisionen der Speicheraddressen ;). Mal ganz abgesehen davon, dass Betriebssysteme diese Speicherbreiche recht flexibel umwidmen können (sollten).
 
Zuletzt bearbeitet:
gegen die Zeitliche Kollision ist ja der DMA controller da ...

Und da reden wir von 4 Takten die er braucht um zu sagen ja oder nein .. 4 Takte beim Systembus von 100 Mhz ... also 60 Takte der Grafikkarte.
 
Hier wird geschrieben, dass ddr3 generell ungeeignet als Grafikspeicher aufgrund der Latenz ist während die Bandbreite irrelevant ist und die sollen recht haben?
Tut mir ja leid aber hast du das hier auch wirklich alles durchgelesen?
Die Formel welche Bandbreite sowie Latenz berücksichtigt ist relativ simpel (zumindest wenn man nicht ins Detail geht) daher ist es auch klar wenn die Latenz ins unendliche geht bringt auch eine beinahe unendliche Bandbreite nichts.

Wie hoch die Latenz von einer diskreten gpu ist die auf ihren Speicher zugreift und einer die auf den Systemspeicher zugreift ist würde man gerne in nem Benchmark sehen, gibts aber anscheinend nicht, mit pcie 4.0 und ddr4 wäre es dann vielleicht eine Verbesserung verglichen zu 64bit ddr3.

Also ums kurz zu fassen:
-Ich behaupte gpu mit ram besser da 128bit ddr3>64bit dd3.
-Leute nehmen seltsamerweise an die gpu verwendet gddr5 und meinen die Latenz ist so viel besser während andere sagen pcie limitiert einfach von der Bandbreite und Latenz.
-Ich stimme zu, dass pcie limitiert (schon alleine von der Bandbreite, Latenz hab ich außen vor gelassen da es einfach keine halbwegs genauen Werte gibt) und dementiere die Aussage gddr5 hätte eine niedrigere Latenz und Bandbreite wäre nicht so wichtig

Nebensächliches hab ich jetzt weggelassen. (Wie dass die cpu auch ein bisschen Bandbreite braucht und shared memory Probleme macht usw...)

Wäre etwas unschön wenn sich hier die Köpfe eingeschlagen werden ob das jetzt eine sehr große oder nur eine etwas große Latenz hervorruft. (In der Theorie wird wohl keiner was einsehen ohne Praxiswerte)
 
Zuletzt bearbeitet:
@ Darkness du hättest dir mal etwas mehr durchlesen müssen da ich mit Piktogramm schon ganz weit in der Materie drinne war.

1. Grafikkarte fordert vom RAM an -> Latenz RAM 17,5 ns + Latenz DMA 4x10ns = 57,5 ns

Latenz DMA = 4 Takte bei 100 Mhz ... = 40 ns !

Und dann auch nur wenn niemand anders was aus dem RAM will erst danach wird Burst READ / WRITE aktiv und die Grafikkarte hat volle Bandbreite.

2. Grafikkarte forder vom VRAM an -> Latenz VRAM 20-30 ns

Was ist nun schneller ?

Es geht hier nicht darum das die CPU ein bissl Bandbreite klaut sondern und jetzt kommt es nur 1 Gerät zur gleichen Zeit sich im RAM tümmeln darf.

Alles auch etwas nachzulesen wenn man googlet Theme wie DMA , Latenz sind ja alle gefallen.

http://de.wikipedia.org/wiki/Speicherdirektzugriff#Funktionsweise_des_DMA-Controllers
http://de.wikipedia.org/wiki/DDR-SDRAM#Latenzzeiten_im_Vergleich
 
Zuletzt bearbeitet:
Muhadib

Da fehlen immer noch die Zeiten für PCIe Controller, Speichercontroller etc. Die Dinger brauchen genauso Zeit allein mit dem DMA-Controller ist das nicht gegessen + Signallaufzeiten* ;)

https://www.usenix.org/system/files/conference/fast14/fast14-paper_vucinic.pdf

Da geht es zwar nicht unbedingt im GPUs aber um Latenzen von PCIe. Was da auf jeden Fall herauskommt ist, dass die Lantenz von Zugriffen über PCIe im Vergleich zu nativ angebundenem DDRam Ewigkeiten beträgt. Weit mehr als die 57ns die du angibst ;)


@Darkness

Das Einbinden von etwas schnellerem Speicher über den von dir vorgeschlagenen Umweg ist auf keinen Fall schneller. Die Bandbreite der Busse, deren aufsummierten Latenzen etc. pp. verhageln den potentiellen Gewinn durch eine etwas höhere theoretisch mögliche Bandbreite total. Wenn muss der schnellere Speicher direkt zur GPU sonst wird es mistig.
 
@ Pikto danke für die Beleuchtung aber alleine schon der ansatz vom DMA sollte ja zeigen das der RAM im Mainboard nicht schneller anzusprechen ist als der auf der Grafikkarte.

Und das hats ja gezeigt.
 
Ich habe mir alles durchgelesen und das die Latenz mindestens 3x so hoch ist war mir auch klar nur wie wirkt sich das nun wirklich auf Anwendungen aus? Da fehlen mir halt Beispiele/Benchmarks/etc... in denen man sieht, dass ne gpu ab x ns so und so viel Performance verliert.
Hier wurde ja mal erwähnt, dass man bei hohen Latenzen mit großen Caches dagegen halten muss - Maxwell zeigt ja bereits, dass es bereits in Richtung großer Caches geht.

Ich weiß nicht, ich kann mir gut vorstellen, dass eine 50% höhere Bandbreite durch 3x so hohe Latenzen zu Nichte gemacht wird aber mit ddr4 und evtl. doppelt so hoher Bandbreite sowie größerem Cache bin ich mir nicht soooo sicher.
(Oder kann mir einer sagen bei welchen Latenzen die Performance wirklich so einbricht, dass selbst die doppelte Bandbreite 0 bringt, sollte sich ja auch von Anwendung zu Anwendung/Spiel zu Spiel unterscheiden nehme ich an)
 
Oder kann mir einer sagen bei welchen Latenzen die Performance wirklich so einbrich
Einfluss von Latenzen des Chipsatz bei DDR2 hab' ich mal getestet, E4300 auf verschiedenen Boards.
Von links nach rechts: 1. 4CoreDualVista, PT880Ultra 2,65Ghz; 2. 965-Ds3, 965P 3,33Ghz; 3. P5K, P35 3,15Ghz; 4. wie 3. mit neuerem Everest.
Read.jpg
Der am Limit laufende billige Via 880 bringt durch geringe interne Latenz trotz geringem Cpu-Takt mit Abstand am meisten Lesedurchsatz.
Mit alten Versionen von Everest konnte man bei einigen Boards auch die Latenzen zur Synchronisierung der Ramslots auslesen (Kompensierung der Signallaufzeit), vielleicht finde ich noch Screenies dazu.

Ergänzend zum Screenie noch ein Ergebnis: GLan, G31, 3Ghz: DDR2-667, 4-4-4-12 CR2 6738 MB/s

Edit: keine Ahnung, warum das große Bild nicht funzt.
 
Zuletzt bearbeitet:
Genau kann dir das keiner Sagen da es auch auf eine gewisse Datenmenge ankommt.

Wenn die GPU 5000 x 8 bits abruft dann ist das scheisse langsam aber wenig Daten .Und das auch nur wenn es immer sofort vom DMA zugriff erhält !

60 ns = Latenz RAM 17,5 ns + Latenz DMA 4x10ns + Dauer fürs Daten Senden

5000 x ca 60 ns = 300 ms = 0,3 s

Ruft sie aber 5 x 800 MB ab dann ist das Flott .

also 5 x 57 ns + 5 x 51 ms = 254 ms = 0,25 s

Und das rein bei RAM Timing + DMA Timing ... Achtung da kommen noch andere Sachen dazu . Es ist übertrieben dargestellt sicher
aber veranschaulicht das ganze mal etwas besser.
 
Wir sprechen nicht über Faktor3 bei den Latenzen! Schau dir das verlinkte PDF an, dort geht es auch schon über PCIe Latenzen. Faktor 100-1000 ist bei den Latenzen angesagt. Anstatt in ns wird in dem Paper auch gleich mal in µs gemessen!

Das ist einfach VIEL zu viel für die Häufigkeit der verschiedenen Speicherzugriffe einer GPU. Caches die sowas auffangen können wären ähnlich wie bei Intels eDRAM +100MB groß (eher ein Vielfaches davon*). Damit sähe eine sinnvolle Konfiguration dann so aus, dass die GPU auf einen Cache von mehreren 100MB zugreift um genügend Daten puffern zu können um nicht an den ewigen Latenzen zu hängen die die ganze Übertragungskette per PCIe mit sich bringt. Nur ne GPU mit mehreren 100MB dediziertem Speicher... wart mal DAS kommt mir bekannt vor!
 
Die Anspielung zielte eher auf VRam.

der eDRAM von Intel ist ja so groß und soll nur die geringe Bandbreite + Latenzen des Arbeitsspeichers abfangen. Wenn per PCIe die Bandbreite noch geringer ist und die Latenzen noch (viel viel viel) höher, würde es ein entsprechend größeren Speicher brauchen. Den gibt es als VRam ja aber schon.
 
Zurück
Oben