GPU galimybės

Iš Wikibooks.
Peršokti į: navigacija, paiešką

Retas atvejis, kai GPU išleidžiamas su 512 bit memory bus. Toks yra AMD Radeon R9 290X. Kad būtų 512 bitų RAM data bus wide reikia minimum 512 laidų (varinių takelių) iki atminties chip'ų. AMD Radeon R9 290X turi iš viso 16 atminties chip'ų ant plokštės. Prie kiekvieno chip'o eina 12 varinių takelių.

http://www.xbitlabs.com/articles/graphics/display/radeon-r9-290x_2.html
http://www.xbitlabs.com/picture/?src=/images/graphics/radeon-r9-290x/08_r9-29x_pcb_big.jpg
http://www.xbitlabs.com/picture/?src=/images/graphics/radeon-r9-290x/02_r9-29x_frr_big.jpg
Iš viso 12*16=192 takeliai arba 192 bit bus wide maximum. Mastant kitaip 8 bitai yra adresavimui (4 kartus adresuojama, tai gaunasi 4*8=32 bitai, o tai 2^32=4294967296 adresų) ir 4 bitai yra data bus. Data bus wide is 4*16=64 bits.
Kad būti arčiau realybės, tai, tarkim, DDR2 atmintis turi 16 chip'ų ant plokštės. Į kiekvieną chip'ą eina 20 laidų. Gaunasi, kad 16 laidų yra for address (16 takelių adresavimui) ir 4 laidai į kiekvieną chipą yra datai. 16*4=64 bit data bus wide. Atminties adresas nepasiekiamas iš pirmo adresavimo, tai reikia 2 ciklų. 2*16=32 bit addressing capabilities. 2^32=4294967296=4G adresų. Teoriškai 4 milijardai adresų padauginti iš 64 bitų, tai gaunasi vien su 32 bitų procesoriumi į atmintį galima įdėti 4294967296*64=274877906944 bits arba 274877906944/8=34359738368 bytes (34 GB). Žinant, kad Intel mėgsta viską optimizuoti, tai adresas talpina per visokius trikus ne 64 bitus informacijos, o 8 bitus (1 byte'ą). Todėl vis tiek didelė galimybė, kad 4 GB yra maksimalus RAM atminties kiekis 32 bitų procesoriui.
Yra dar tokie dalykai kaip multiplexed address and data bus. Tokiu atveju 16 takelių yra for address bus ir for data bus vienu metu. Paprasčiausiai tuomet reikia iš viso 3 ciklų, kad paimti informaciją iš atminties. Pirmas ciklas duoda pirmus 16 bitų addreso nustatymui, antras ciklas duoda kitus 16 bitų adreso nustatymui (2 pirmi ciklai nustato iš 32 bitų adresą nuo 0 iki 4294967295), trečias ciklas atsiunčia (arba nusiunčia) 16 bitų informacijos (iš vieno čipo). Su tokia multiplexed data bus teoriškai galima būtų iš 3 ciklų gauti 16(bitų) * 16(chipų)=256 bitus informacijos (nusiųsti arba paimti procesoriui į/iš atminties RAM).
Palyginimui, AMD Radeon HD 4800 series turi ant plokštės 8 RAM chipus ir oficialiai 256 bitų (DDR2 ar DDR3 su oficialiai double data rate) data bus wide. Į kiekvieną Radeon HD 4800 atminties RAM chipą eina apie 16 ar 20 takelių. Išeina, kad šitie GDDR su keturgubu data rate transfer yra 2 kartus lėtesni už DDR. Bet iš tikro, tai 256 bitų GDDR su 8 chipais turi irgi į kiekvieną RAM chipą po 16-20 takelių. Čia kažkaip takelių skaičius į atminties čipus sumažėjo dėl to, kad RAM chipų skaičius padvigubėjo nuo 8 chip'ų iki 16 chip'ų.
Nereikia per daug pergyventi, kad reikia 2 ciklų pasiekti 32 bitų adresą su 16 bitų address bus, nes pirmi 16 bitų nustato apytikslų adresą, o paskui šokinėjama atstumu nuo 0 iki 2^16=65536 adresų +/-. Su 8 bitų address bus per pirmus 3 ciklus duodamas adresas 24 bitų tikslumu, o per ketvirtą ciklą šokinėjama 2^8=256 adresu atstumu (nuo 0 iki 255 adresą galimą pakeisti į viršų arba žemyn).
Geriau pažiūrėjus AMD Radeon R9 290X kitoje pusėję turi po 5 varinius takelius į kiekvieną atminties chip'ą. Gaunasi iš viso eina 5+12=17 takelių kiekvienam RAM chip'ui. Gal dar kur nors praleisti 2-3 takeliai einantis per visus video-RAM chip'us (1 maitinimui, 1-2 for Read/Write, 1 laikymui pirmo adreso iš 16 bitų, kuris buvo duotas per pirmą ciklą). Iš matomų takelių gaunasi, kad AMD Radeon R9 290X turi 256 bit memory bus wide, nes 17(takelių)*16(chip'ų)=272 takeliai. Jei AMD Radeon R9 290X turi 256 bit'ų pločio memory bus, tai gali nusiųsti į kiekvieną atminties chip'ą 256(bits wide memory bus)/16(chips)=16 bits.


Update 1. Koks dar variantas gali būti? AMD Radeon R9 290X turi oficialiai 512 bit'ų pločio memory bus interface ir turi 4 gigabaitus RAM. AMD Radeon R9 290X turi iš viso 16 atminties chip'ų. Į kiekvieną chip'ą eina 17 varinių takelių (12 takelių iš priekinės pusės ir 5 takeliai iš galinės pusės). Kad adresuoti 4 GB atminties, reikia 32 bitų (2^32 = 4294967296 bytes = 4 GB) datos siuntimo į atminti, kad iš atminties gauti nusiųsto adreso datą. Tarkim, kad AMD Radeon R9 290X turi 256 bit wide memory bus, nes 16 laidų (varinių takelių) naudojami adreso nustatymui (iš dviejų ciklų) ir 1 takelis for Read/Write. Maitinimui (+) atminties (RAM) chip'ų eina kur nors nepastebėtas takelis per visus chip'us arba maitinimo takelis realybeje netaikomas, o užtenka, kad yra graund (GND arba -) takelis per visus chip'us. Tokiu budu, per pirmą ciklą į visus atminties chip'us nusiunčiami pirmi 2 baitai (16 bitų) adreso, per antrą ciklą nusiunčiami kiti 2 baitai adreso (kad iš viso po dviejų ciklų susidėtu 32 bitų adresas), o per trečią ciklą nusiunčiama arba atsiunčiama [į/iš] VideoRAM 16 bitų informacijos (kiekviename chip'e informacija kitokia). Kadangi yra iš viso 16 VRAM chip'ų, tai per 3 ciklą atsiunčiama/nusiunčiama 16(chip'ų)*16(bitų)=256 bitai informacijos. Bet viskas gali vykti ir per 2 ciklus. Pirmas ciklas nusako apytiklsę vietą atmintyje, o paskui ant tų 16 bitų pradinio adreso laikoma (tam reikia dar vieno varinio takelio per visus chip'us, kad žinot ar bus dviejų ciklo ar vieno ciklo adresavimo instrukcija) ir siunčiama kas kart tik antro ciklo adreso dalis, po kurios seka išskaitymo/įrašymo ciklas. Logiška manyti, kad dažniausiai naudojamos 2 ciklų (pavyzdžiui, teksturos nuskaitymo) operacijos. Kadangi AMD Radeon R9 290X turi 4 gigabytes of GDDR5, tai atminties dažnis 1250 MHz dauginamas iš 4 (nes GDDR5 atminties tipas). Tokiu budu gaunamas 1250*4=5000 MHz efektyvus atminties dažnis. Kadangi informacijos nusiuntimui/gavimui reikia 2 ciklų, tai 256(bits)*5000(MHz)/2(ciklų)=640000000000(bits/s)=80000000000 (bytes/s) = 80 (GB/s). Oficialiai skaičiuojama taip: 512(bits) * 5000(MHz) = 320 (GB/s). Jei įrašymas į atmintį ar išskaitymas iš atminties kažkokiu budu įmanomas per 1 ciklą, kai adresas atmintyje automatiškai pridedamas (pavyzdžiui, BMP tekstūros nuskaitymui), tai fiziškai vis tiek yra tik 17(takelių)*16(chip'ų)=272 takeliai arba 256 bit'ų memory bus, kas maximum duoda 256(bits) * 5000(MHz) = 160 (GB/s).