4 Ocak 2009 Pazar

Grafik kartı anlatımı

BOLUM 1: Temel Fiziksel Ozellikler

Arkadaslar bu yazinin amaci grafik kartlarinin ozelliklerini ve yapilarini anlatmaktir. Son zamanlarda cok sık sorulan sorular ve anlasilamayan ozellikleri netlestirmek icin bu dokuman hazirlanmistir. Oncelikle grafik kartlari diyince gunumuzun modern 3D grafik kartlarini anlatmaya calisacagim. Yani 2D ve 3D ozelliklerini ayni anda sunan kartlardan bahsedecegim.

Oncelikli olarak bilinmesi gereken grafik kartlarinin bir sub-system oldugudur. Yani bilgisyardan ayri olarak kendi icinde calisan, kendi BIOS’u ve kendi hafiza denetleyicisi olan bir eklenti kartindan (add-on card) bahsediyoruz. Bu kart icinde 3 ana oge bulunur. Bunlarda ilki ve en onemlisi tum grafik, doku ve vektorel hesaplamalari yapan grafik islemcisidir. Son yillarda grafik islemciler o denli gelismislerdir ki gunumuzun en guclu ve modern CPU’larindan kat ve kat daha yuksek transistore sahiptirler ve islem kapasiteleri de cok yuksektir. Gelistiriciler tarafindan kismen veya tamamen programlanabilir olmalari sayesinde son zamanlarda bu grafik islemcilerine GPU (Graphical Processing Unit) ya da VPU (Visual Pprocessing Unit) isimleri verilmistir.

GPU’nun asil amaci islem yapaktir. Yani 3D ortamda bir noktanin koordnatlarinin konumu ve diger noktalara nasil baglanacagi, ucgen ve poligonlarin durumu ve nasil olusturulcagi, doku kaplamalarinin yapilmasi ve kayan nokta olarak tabir edilen bir noktanin bir sonraki goruntu karesinde nasil hareket edecegi konusundaki tum hesaplamalari yonetir. GPU’nun da ayni CPUlar gibi ayni anda isleyebilecegi veri miktari vardir. Gunumuzun en modern GPUlari 256bit’liktirler. Yani ayni anda 256bitlik veriyi isleyebilir veya hesaplayabilirler. Su anda sizin de bildiginiz gibi bilgisayar CPU’larin cogu 32bittir. Bu da GPU’larin gucunu ortaya koymaktadir. Bir anda islenebilecek veri miktari ne denli cok olursa, performans da o denli artar.

GPUlarin verileri isleyebilmesi icin is hattina sahip olmalari gerekir. Bu is hatlari ne kadar fazla olursa islenebilecek veri ayri kanallardan o denli cabuk islenebilir. Gunumuzde en yuksek seviye ekran kartlari 16 adet is hattina sahiptir ve bu oldukca yuksek bir rakamdir. Bu 16 adet is hattinin amaci hafizadan gelmis olan veriyi GPU’nun islem noktari olan FPU unitesine aktarmaktir. Boylece veri islenir ve goruntu olarak aktarilir. Her pipeline (is hatti) 1 veya 2 adet TMU’ya sahiptir. TMU ise bir is hattinda kac tane texture yani doku tasinabilecegini gosterir. TMU sayisi ne kadar fazla olursa GPU’nun doldurma hizi yani fillrate de o denli artar.

GPU ayni zamanda bir hafiza denetleyicisine de sahiptir. Bu hafiza denetleyicisi, PCB’nin (yani kartin uzerine insa edildigi silika alasimli yari iletken board) durumuna gore 256, 128, 64 ya da 32 bit veriyolu genisligine sahip bir kanaldan hafizayi yonetir. Veriyolu genisligi ne denli buyuk olursa, GPU’ya iletilen birim zamandaki veri ve doku miktari da o denli yuksek olur. Yani bir karilastirma yapmak gerekirse bu veriyolu bir otobana benzetilebilir. Otobandaki seritler ne kadar fazla olursa birim zamanda o kadar fazla arac gecebilir. Veriyolu genisligi ekrk\an kartinin yuksek performan vermesinde direkt rol oyanayan bir faktordur. Bu yuzden en ust seviye ekran kartlari 256 bitlik genis bir veriyoluna sahiptirler. Teorik hafiza bant genisligi hesaplamalarinin nasil yapildigini ilerki bolumlerde okuyacaksiniz.

ONEMLI!!!! GPU’nun ayni anda isleyebilecegi veri miktari ile hafiza denetleyicisinin veriyolu genisligi pekcok kisi tarafindan karistirilmaktadir. Unutmayin ki gunumuz GPUlarinin hemen hepsi 256bittir, ancak hafiza denetleyicileri 64, 128 ya da 256 bit olabilmektedir. Ekran kartinizi satin alirken hafiza denetleyicisinin 64 bit olmadigina dikkat edin.

Hafiza ekran kartinda oldukca onemli bir parametredir. Dogal olarak hafiza miktarinin artisi performansi arttirir ancak bu islem dolaylidir ve her zaman dogru olmayabillir. Ekran kartinin hafizasi basi islemleri, dokulari ve algoritmalari depolamak icin kullanilir. Hafiza miktari 256MB olan bir kartin maksimum 80MB tekture kullanan bir oyunda 128MB hafizaya sahip eslenigi ile arasinda bir performans farki yoktur. Ancak bazi goruntu kalitsi iyilestirici ozelliklar acildigina (Anti-Anliasing ve Anisotropic Filtering) ekran karti her bir texture icin mipmap diye tabir edilen bazi layerlar (tabaka) olusturur ve her texture bircok kez ekran karti hafizasina depolanir. Bu yuzden bazi tektirelarin birden fazla olarak hafizada yer almasi da gerekebilir. Bu yuzden hafizanin artmasi dolayli yoldan parformansi etkileyebilir. ANCAK! Herkesin de acikca bildigi gibi AntiAliasing ve Anisotropic Filtering Perfomansi oldukca dusuren uygulamalardir ve bu ozellikler acik iken GPU buyuk bit yuk altina girer. GPU eger bu yuku kaldiramayacak olursa ekran karti yeterli framerate (fps) saglayamaz ve oyunun oynanabilirligi azalir. Gunumuzde herkesin agzinda olan “Ekran kartinin hafizasi ne kadar coksa o kadar iyidir” sozune guvenerek firmalar alt ve orta seviye ekran kartlarini cok yuksek miktarda hafiza ile donatarak yuksek fiyata satmaktadirlar. Dusuk seviye ekran kartlarinin en unlulerinden olan nVidia’nin GeForceFX 5200 adli urunu, bazi frmalar tarafindan 256MB’lik versiyonlarla piyasaya suruluyor. Ustte de acikladigim gibi bu denli yuksek hafizanin faydasi ancak AntiAliasinge ve Anisotropic Filtering aciken farkedilebilir. Ancak dusuk GPU ve RAM hizi, 4 is hatli bir ekran karti olan GF FX 5200’un bu hafizayi kullanabilmesi mumkun degildir. AA ve AF acik oldugu zaman GPU cok zorlanacak ve framerate dusecektir. Bu yuzden bu tur pazarlama hilelerine kanip yuksek hafiza = yuksek performans mantigini kafanizdan silmelisiniz.

Hafizanin bir baska onemli ozelligi de tipi ve hizidir. Artik gunumuzde eredeyse her ekran karti DDR-SDRAM diye tabir edilen bir saat dongusunden 2 adet veriyi ayni anda tasiyabilen Ram’lere sahiptir. Ancak DDR-SDRAM gelistirlmis ve GDDR2 ve GDRR3 adi altina daha soguk calisan ve daha yuksek hizlara cikabilen chipler uretilmistir. Gunumuzde satilan en ust duzey ekran kartlari olan GeForce 6800 serisi ve Radeon X800 serisi kartlar GDDR3 hafiza tipini kullanmaktadirlar. Bu sayede hem daha az isinan belleklere sahip olurlar hem de 1Ghz’ten bile daha hizli calisan bellekler ile daha yuksek hafiza bant genisligine sahip olurlar.

Teorik hafiza bant genisligi nasil hesaplanir? Aslinda oldukca basit bir matematik islemidir.

(Bellek hizi) x (Hafiza denetleyicisinin veriyolu genisligi) / 8 = (MB/s cinsinden teorik hafiza bant genisligi)

Yani bir ornek verecek olursak Radeon X800XT PE ekran kartinin bellek hizi 1150Mhz’tir ve 256bitlik bir hafiza denetleyicisi veriyolu genisligine sahiptir. Dolayisiyla teorik hafiza bant genisligi:

1150x256/8 = 36,8GB/s olacakir.

Ekran kartinin temel fiziksel ozellikleri bunlarla sinirlidir. Bundan sonraki bolumde size ekran kartlarinin grafiksel ve goruntu kalitesi iyilestirmede kullanilan diger ozelliklerini anlatmaya calisacagim. (DirectX, CineFX, 3Dc, FSAA, AF, LOD,...vs)

BOLUM 2: Gelismis ozellikler ve goruntu iyilestirme


Bu yazinin amaci, grafik karti dosyasinin ilk bolumunde anlattigim temel fiziksel ozelliklere ek olarak goruntu iyilestirmede kullanilan ozelliklerin bazilarini ve 3D dunyasinda kullanilan bazi terimleri ozetlemektir. Her terimi ozetleyemeyecegim icin en cok karsilasilan terimlere deginiyorum.

Hepinizin bildigi gibi dunumuz ekran kartlari 2D ve 3D ozellikleri bir arada bulunduran bir alt-sistemdir. 3D dunyasi ilk olarak 1980’lerin ortasinda gelismeye baslamis olsa da bizim gibi son kullanicilarin bu devrimle tanismasi 1996 yilinda oldu. Silicon Graphics firmasindan ayrilan iki muhendis 3dfx adli firmayi kurdular ve 3D dunyasini ilk olarak son kullaniciya actilar. Bir 3D sahnenin yaratilmasi icin bir API’ye, yani Application program Interface’e ihtiyac vardir. Bir rutin, program seti tplulugu olan bu arayuz yardimiyla bir 3D sahne tasarlanabilir.

Gunumuzde 2 buyuk API bulunmaktadir: Microsoft Direct3D ve OpenGL. Piyasada 3. baska bir API de yaygin olarak kullanilmaktaydi ve bu API’yi eskiden beri 3D dunyasini takip eden kullanicilar bilecektir: GLIDE. Glide, 3dfx tarafindan OpenGL baz alinilarak gelistirilmis bir API idi ancak 2000 yilinin sonunda 3dfx’in tum haklarinin nVidia tarafindan satin alinmasi ile piyasadan silindi.

Bizim yaygin olarak kullandigimiz 3D programlar olan oyunlar, gunumuzde geri kalan 2 yaygin Api ile programlanip olusturulmaktadir. Microsoft’un Direct3D’si su anda son kullanicilar tarafindan en cok kullanilan API olmasina ragmen, OpenGL, acik kaynak kodlu bir yazilim olmasi ve profesyonel alanda Direct3D’den cok daha fazla programlanabilir ve genisletilebilri olmasi acisindan daha fazla ragmet gormektedir.

Direct3D, Microsoft’un Windows95’e gecis yapmasi ile kullanilmaya baslanan bir uygulamadir. DOS ortaminda oynanan oyunlarin terk edilmesi ve 3D’nin duyurulmasi ile Microsoft grafik yongasi ureticileri ile ortaklasa calisarak D3D standartlarini surekli guncelledi ve gerekli gelistirmeleri yapti. Su anda kullanmakta oldugumuz DirectX’in 9. surumu Direct3D’nin gelmis oldugu en son noktayi belirlemektedir.

OpenGL ise son kullanicidan cok profesyonel CAD/CAM ve 3D cizim uygulamalarinin ureticilerinin dogrultusunda gelismis daha farkli bir API’dir. Ancak OpenGL bizim gibi son kullanicilarin da kullandigi bazi oyunlarda onemli rol oynamistir. İd Softtware’in Quake2, Quake3, Doom3 gibi oyunlari bu API’yi kullanarak gelistirilmis ve oldukca da basarili olmuslardir.

3D dunyasinda su anda sikca duydugumuz bir terim bulunmaktadir: Shader. API’lerin gelisim sureclerinde eklenen bu ozellik bir cesit vektorel golgelendirme algoritmasidir. Pixel ve Vertex olarak iki farkli shader bulunmaktadir ve pixel shader adindan da anlasilacagi gibi belirli pixellerin belli bir kod ya da kodlar zinciri vasitasiyla golgelendirerek daha gercekci 3D sahnelerin yaratilmasini saglar. Vertex Shader ise daha cok islenmemis bir 3D sahnedeki objelerin birbirlerine olan baglarini ve hareketlerinin daha onceden yazilmis bir kod yardimi ile kontrol edilmesini saglar. Pixel Shader efektlerini bir ornek olarak su yuzyinde yansima efektleri verilebilir. Vertex shader efektleri ise goz ile gorulebilecek bir sey olmasa da, ornegin bir cesit ruzgarin 3D sahnedeki objelerin hareketi uzerine etkisi olarak orneklenebilir.

Baska sikca duyulan bir ozellik de mapping’dir. Bump, parralax, displacement, mip-map gibi cesitli metodlar kullanilarak yapilan bu uygulama, doku kapli bir yueyin eblirli noktalarinda glgelendirme efekti vermeye yarar. Ornegin bir tas duvarin onunde yanan bir atesin olusturacagi golgelerin nasil ve ne yonde olusacagi konusunda mapping kodlari gorevi ustlenir. Bump mapping belli bir yer degistirme ya da kabartma olmadan sanal olarak cikinti ve girintileri olustururken, displacement mapping, doku kapi yuzeylerin seklini de degistirerek daha gercekci efekler olusturabilir.

Anisotropic Filtering. Bir cogumuz bu terimi duyuyoruz ama cogumuz ne ise yaradigini bilmiyor. Adindan da anlasilacagi gibi bir cesit filtreleme yontemidir bu. 3D sahnelerde baki acisi kuculdugunde yuzeyler daha flu gozukur ve netlik azalir. Bunun sebei ise daha az alanda daha fazla detay gostermek zorunda kalan API’nin zorlanmasidir. Fakat bir cesit sonradan filtreleme olan Anisotropic Filtering (AF) bu cesit bir durumda dokulari netlestirerek goruntu kalitesini iyilestirir. Bu is GPU tarafindan yapildigi icin, performans kaybi kacinilmazdir. Buna bir ornek verecek olursak, FPS tarzi bir oyunda bulundugunuz zemine bakabilirsiniz. Belli bir mesafeden sonra yer kaplamasinin netligini yapbettigini goreceksiniz. AF acildigi zaman tekrarlama seviyesine gore (1x----16x) doku netligi artacaktir.

Full Scene Anti-Aliasing. Bu terim bize 1999 yilinda 3dfx tarafindan duyuruldu. Belki de 3D tarihindeki en onemli gelismelerden biri olan Anti-Aliasing (AA), merdiven efekti olarak adlandirilan 3D sahnelerdeki objelerin cigilerini yumusatma ve daha kaliteli goruntuler elde etmek icin kullanilan bir yontemdir. 3D sahnelerde bir cizgi yaratmak icin tek bir yol vardir. Sadece dikdortgen sekilli yatay ve dikey olarak pikseller bir araya getirilebildiginden, egri ya da acili bir cizgi lusturuldugunda bu cizgi bir merdiven basamagi gibi tirtikli gorunur. AA ise bu efekti yok etmek icin her pixelin etrafindaki pixelleri, ortadaki pixelin rengine gore farkli tonlarda renklendirir ve/veya kendi ekseni etrafinda cevirir. Pixel kombinasyonalrina gore (2x-8x) kalite arttirilabilir, ama ekran kartinin performansini ldukca dusuren bir uygulamadir. Hem hafiza bant genisliginden hem de doldurma hizindan feragat etmek gerekir.

0 yorum:

Yorum Gönder