Ik was eerst van plan hier een vraag te stellen uit mijn onwetendheid, maar naar mijn onderzoekje naar geheugen is het nu meer een gedacht die ik wil pijlen. Ik vroeg mij namelijk af hoeveel geheugen een 4gb GTX770 KAN gebruiken met een 256 bit brede geheugen bus. Sommige hoor ik zeggen dat de kaart niet eens die 4gb kan gebruiken door de te kleine geheugen bus, maar niemand kon vertellen hoeveel dan wel en waarom.
Ik was een complete noob op geheugengebied een paar uur geleden en wist alleen dat hogere MHz vaak beter was. Nu denk ik dat ik heb kunnen berekenen hoeveel een GTX770 4gb in een best-case scenario kan gebruiken bij een FPS van 60. Eerst mijn gedachtegang en redenatie.
Ik kwam erachter dat GDDR5 2 verschillende clocks gebruikt voor het lezen en schrijven van bits; de Command Clock (CK) en Word Clock (WCK). De WCK opereert op 2 keer de snelheid van de CK en bij Double Data Rate wordt zowel bij de stijgende als dalende kant van het clock signaal, data getransferd. Bij DDR3 is de data rate keer 2, voor GDDR5 is die zelfs 4; daarom is de effectieve kloksnelheid voor DDR3 altijd keer 2 en die van GDDR5 keer 4. De chip naar I/O (CK) frequentie ratio is 4 tot 1, dus voor een CK van 1000MHz lopen de chips apart 250MHz.
De GTX770 heeft een CK van 1753 MHz, een WCK van 3506MHz en een effectieve snelheid van 7012MT/s (Megatransfers per second). De bandbreedte van de geheugen bus is 256 bit wat betekend dat er elke transfer voor 256 bit aan data wordt getransferd, ofwel (256/8) = 32 bytes per transfer. Dat is dus (7012*32) = 224384 MB/s (het is Megatransfers per second dus ook Megabytes per second), wat op zijn beurt 224,384GB/s is. Tot zover klopt alles met de daadwerkelijke specificaties opgegeven door NVidia.
De algemene formule voor GDDR5 bandbreedte is overigens: CK*4*(bus width/8).
Elke geheugenchip van GDDR5 kan zowel in x32 of x16 snelheid lopen. Welke van de twee hangt af van de hoeveelheid geheugen op het PCB. Een 2gb GTX770 heeft 8 memory chips op het PCB zitten, wat neerkomt op 256MB per chip. Voor de 2gb kaart zijn de chips ingesteld op x32 snelheid, wat overeenkomt met de bandbreedte van het geheugen (8*32 = 256). Voor de 4gb kaarten zouden de chips dus op een snelheid van x16 draaien, anders zou de bandbreedte 512 worden en dat is niet de bedoeling. Dus ervan uitgaand dat een GTX770 4gb het dubbele aantal geheugenchips krijgt in plaats van dubbele grootte chips (iets wat qua berekeningen niet uitmaakt), komt het erop neer dat er op de GTX770 4gb 16 chips van 256MB zitten op een snelheid van x16 (of 16 bit). Dit is een Clamshell configuratie wat betekend dat de chips in plaats van x32 zijn aangesloten, x16 zijn aangesloten; dus één pin voor de bovenkant, de ander voor de onderkant en dat om en om.
Uitgaand van de 4 tot 1 ratio van de CK clock kunnen we ervan uitgaan dat de Memory Cells apart op 438,25MHz lopen op een snelheid van x16. De snelheid van de Memory Cell was een kwart van de CK dat op zijn beurt weer een kwart was van de effectieve kloksnelheid. De snelheid van een Memory Cell is dus een 16de van de effectieve kloksnelheid, die info is verder echter niet nodig. Wel is het nodig om te weten dat er voor een 256 bus bij de 4gb kaart 16 chips zijn en voor de 2gb maar 8. De algemene formule(s) voor de Memory Cell bandbreedte is/zijn dus:
Memory Cell Clock*16*(bus width/8) voor de 4gb versie
Memory Cell Clock*8*(bus width/8) voor de 2gb versie
Met die formule(s) kan je uitrekenen dat de bandbreedte voor één cel op een GTX770 4gb 14024MB/s is (438,25*16*(16/8)). Voor de volledigheid: voor de 2gb versie is het (438,25*8*(32/8)) ook 14024MB/s. Elke cel heeft dus een bandbreedte van 14.024GB/s. “Maar je had ook 224.384 kunnen delen door het aantal geheugenchips,” en dat klopt maar ik vond dit een stuk boeiender en ik moest zeker weten dat het allemaal klopte!
Dan nu het gedeelte waar het voor mij om ging, en waar ik al het voorgaande voor in één avond heb proberen te begrijpen: hoeveel gigabyte kan er van de GTX770 4gb gebruikt worden door de kleine geheugen bus? Dit is ook het gedeelte waar ik niet weet of ik het juist heb. Het vorige gedeelte overigens ook niet, maar alle cijfers klopten dus ik ga er even van uit dat ik het bij het juiste eind heb.
Ok nu we dat weten kunnen we bedenken hoeveel een game nodig heeft qua bandbreedte als die de volle 4gb (of 256MB per cel) wilt gebruiken. Als de game op 60fps per seconde loopt dan is er een bandbreedte nodig van (256*60) = 15360MB/s per seconde ofwel, 15.36GB/s. Oh jee, dat is niet wat de GTX770 4gb aan kan per chip. Dat was maximaal 14.024GB/s. Er is dus een tekort van 1,336GB/s, maar hoeveel GB in geheugen is dat in het geheel? Nou 1,336GB/s maal 16 (voor het totaal aantal geheugen chips) is een totaal tekort van 21,376GB/s. Als de game per seconde 60 frames toont dan is dat tekort per frame 0,35626GB/s en dat is ~357MB geheugen. Mocht ik het dus met mijn theorie juist hebben dan kan de kaart bij 60fps ‘maar’ ongeveer 3739MB van de 4096MB gebruiken. Dat lijkt mij toch nog duidelijk meer dan de 2048MB op de 2gb versie en het argument dat de 4gb versie zonde van het geld is lijkt mij dan ook ongeldig.
Wat ik ook interessant vind is dat er gezegd wordt dat het allemaal getest is en dat er bewezen is dat het niet uitmaakt. Mocht ik het echter bij het goede eind hebben, betekent dat ook dat het nog helemaal niet realistisch getest KAN worden. Je zult pas merken dat je bandbreedte echt te klein is als je bijvoorbeeld 120fps probeert te behalen in een game die de 4gb echt NODIG heeft, maar die games bestaan niet. De enige manier om 4gb deze dagen vol te maken is via een obsceen hoge resolutie, zoals 3x 2560x1440. Feit is echter dat je met een GTX770 sowieso nooit bij de 120fps in de buurt komt met die resolutie, ik durf te wedden dat je zelfs niet bij de 40fps in de buurt komt met een dergelijke resolutie. Het lijkt mij daarom ook niet dat het met de hedendaagse games überhaupt te testen valt. De vraag die ik wel eens zie of mensen een GTX770 4gb moeten kopen om te future-proofen lijkt mij dan ook allerzins redelijk en te beantwoorden met een ‘ja’. Hoewel het waar is dat een GTX770 4gb geen 4096MB kan gebruiken bij 60fps, blijft de bruikbare 3739MB toch ruimschoots meer dan 2048MB en een solidere keuze voor de toekomstige games. Wie weet hoeveel geheugen die gaan opeten, zeker met een optimalisatie voor de GDDR5 in de nieuwe PS4 bijvoorbeeld.
Wat denken jullie ervan? Klopt het überhaupt een beetje wat ik zeg? Ik ben benieuwd naar de visie van mijn mede-Tweakers
P.S. Ik zie net dat ik hier de hele avond mee zoet ben geweest en de tijd vloog voorbij haha, waarom vindt ik zoiets leuk
Zal wel gek zijn.
Edit: Bronnetjes toegevoegd voor degene met interesse
http://www.tomshardware.c...-30-question-gddr5-memory
http://www.elpida.com/pdfs/E1600E10.pdf
Wikipedia: GDDR5
Wikipedia: Prefetch buffer
Wikipedia: Transfer (computing)
Wikipedia: DDR3 SDRAM
Ik was een complete noob op geheugengebied een paar uur geleden en wist alleen dat hogere MHz vaak beter was. Nu denk ik dat ik heb kunnen berekenen hoeveel een GTX770 4gb in een best-case scenario kan gebruiken bij een FPS van 60. Eerst mijn gedachtegang en redenatie.
Ik kwam erachter dat GDDR5 2 verschillende clocks gebruikt voor het lezen en schrijven van bits; de Command Clock (CK) en Word Clock (WCK). De WCK opereert op 2 keer de snelheid van de CK en bij Double Data Rate wordt zowel bij de stijgende als dalende kant van het clock signaal, data getransferd. Bij DDR3 is de data rate keer 2, voor GDDR5 is die zelfs 4; daarom is de effectieve kloksnelheid voor DDR3 altijd keer 2 en die van GDDR5 keer 4. De chip naar I/O (CK) frequentie ratio is 4 tot 1, dus voor een CK van 1000MHz lopen de chips apart 250MHz.
De GTX770 heeft een CK van 1753 MHz, een WCK van 3506MHz en een effectieve snelheid van 7012MT/s (Megatransfers per second). De bandbreedte van de geheugen bus is 256 bit wat betekend dat er elke transfer voor 256 bit aan data wordt getransferd, ofwel (256/8) = 32 bytes per transfer. Dat is dus (7012*32) = 224384 MB/s (het is Megatransfers per second dus ook Megabytes per second), wat op zijn beurt 224,384GB/s is. Tot zover klopt alles met de daadwerkelijke specificaties opgegeven door NVidia.
De algemene formule voor GDDR5 bandbreedte is overigens: CK*4*(bus width/8).
Elke geheugenchip van GDDR5 kan zowel in x32 of x16 snelheid lopen. Welke van de twee hangt af van de hoeveelheid geheugen op het PCB. Een 2gb GTX770 heeft 8 memory chips op het PCB zitten, wat neerkomt op 256MB per chip. Voor de 2gb kaart zijn de chips ingesteld op x32 snelheid, wat overeenkomt met de bandbreedte van het geheugen (8*32 = 256). Voor de 4gb kaarten zouden de chips dus op een snelheid van x16 draaien, anders zou de bandbreedte 512 worden en dat is niet de bedoeling. Dus ervan uitgaand dat een GTX770 4gb het dubbele aantal geheugenchips krijgt in plaats van dubbele grootte chips (iets wat qua berekeningen niet uitmaakt), komt het erop neer dat er op de GTX770 4gb 16 chips van 256MB zitten op een snelheid van x16 (of 16 bit). Dit is een Clamshell configuratie wat betekend dat de chips in plaats van x32 zijn aangesloten, x16 zijn aangesloten; dus één pin voor de bovenkant, de ander voor de onderkant en dat om en om.
Uitgaand van de 4 tot 1 ratio van de CK clock kunnen we ervan uitgaan dat de Memory Cells apart op 438,25MHz lopen op een snelheid van x16. De snelheid van de Memory Cell was een kwart van de CK dat op zijn beurt weer een kwart was van de effectieve kloksnelheid. De snelheid van een Memory Cell is dus een 16de van de effectieve kloksnelheid, die info is verder echter niet nodig. Wel is het nodig om te weten dat er voor een 256 bus bij de 4gb kaart 16 chips zijn en voor de 2gb maar 8. De algemene formule(s) voor de Memory Cell bandbreedte is/zijn dus:
Memory Cell Clock*16*(bus width/8) voor de 4gb versie
Memory Cell Clock*8*(bus width/8) voor de 2gb versie
Met die formule(s) kan je uitrekenen dat de bandbreedte voor één cel op een GTX770 4gb 14024MB/s is (438,25*16*(16/8)). Voor de volledigheid: voor de 2gb versie is het (438,25*8*(32/8)) ook 14024MB/s. Elke cel heeft dus een bandbreedte van 14.024GB/s. “Maar je had ook 224.384 kunnen delen door het aantal geheugenchips,” en dat klopt maar ik vond dit een stuk boeiender en ik moest zeker weten dat het allemaal klopte!
Dan nu het gedeelte waar het voor mij om ging, en waar ik al het voorgaande voor in één avond heb proberen te begrijpen: hoeveel gigabyte kan er van de GTX770 4gb gebruikt worden door de kleine geheugen bus? Dit is ook het gedeelte waar ik niet weet of ik het juist heb. Het vorige gedeelte overigens ook niet, maar alle cijfers klopten dus ik ga er even van uit dat ik het bij het juiste eind heb.
Ok nu we dat weten kunnen we bedenken hoeveel een game nodig heeft qua bandbreedte als die de volle 4gb (of 256MB per cel) wilt gebruiken. Als de game op 60fps per seconde loopt dan is er een bandbreedte nodig van (256*60) = 15360MB/s per seconde ofwel, 15.36GB/s. Oh jee, dat is niet wat de GTX770 4gb aan kan per chip. Dat was maximaal 14.024GB/s. Er is dus een tekort van 1,336GB/s, maar hoeveel GB in geheugen is dat in het geheel? Nou 1,336GB/s maal 16 (voor het totaal aantal geheugen chips) is een totaal tekort van 21,376GB/s. Als de game per seconde 60 frames toont dan is dat tekort per frame 0,35626GB/s en dat is ~357MB geheugen. Mocht ik het dus met mijn theorie juist hebben dan kan de kaart bij 60fps ‘maar’ ongeveer 3739MB van de 4096MB gebruiken. Dat lijkt mij toch nog duidelijk meer dan de 2048MB op de 2gb versie en het argument dat de 4gb versie zonde van het geld is lijkt mij dan ook ongeldig.
Wat ik ook interessant vind is dat er gezegd wordt dat het allemaal getest is en dat er bewezen is dat het niet uitmaakt. Mocht ik het echter bij het goede eind hebben, betekent dat ook dat het nog helemaal niet realistisch getest KAN worden. Je zult pas merken dat je bandbreedte echt te klein is als je bijvoorbeeld 120fps probeert te behalen in een game die de 4gb echt NODIG heeft, maar die games bestaan niet. De enige manier om 4gb deze dagen vol te maken is via een obsceen hoge resolutie, zoals 3x 2560x1440. Feit is echter dat je met een GTX770 sowieso nooit bij de 120fps in de buurt komt met die resolutie, ik durf te wedden dat je zelfs niet bij de 40fps in de buurt komt met een dergelijke resolutie. Het lijkt mij daarom ook niet dat het met de hedendaagse games überhaupt te testen valt. De vraag die ik wel eens zie of mensen een GTX770 4gb moeten kopen om te future-proofen lijkt mij dan ook allerzins redelijk en te beantwoorden met een ‘ja’. Hoewel het waar is dat een GTX770 4gb geen 4096MB kan gebruiken bij 60fps, blijft de bruikbare 3739MB toch ruimschoots meer dan 2048MB en een solidere keuze voor de toekomstige games. Wie weet hoeveel geheugen die gaan opeten, zeker met een optimalisatie voor de GDDR5 in de nieuwe PS4 bijvoorbeeld.
Wat denken jullie ervan? Klopt het überhaupt een beetje wat ik zeg? Ik ben benieuwd naar de visie van mijn mede-Tweakers
P.S. Ik zie net dat ik hier de hele avond mee zoet ben geweest en de tijd vloog voorbij haha, waarom vindt ik zoiets leuk

Edit: Bronnetjes toegevoegd voor degene met interesse
http://www.tomshardware.c...-30-question-gddr5-memory
http://www.elpida.com/pdfs/E1600E10.pdf
Wikipedia: GDDR5
Wikipedia: Prefetch buffer
Wikipedia: Transfer (computing)
Wikipedia: DDR3 SDRAM
[ Voor 3% gewijzigd door XxRenéxX op 12-06-2013 01:26 ]