AMD ATI Radeon HD2900 XT

AMD ATI Radeon HD2900 XT

AMD je danas i zvanično predstavio novu familiju Radeon akceleatora koja nosi oznaku HD2000. Osim podrške za DirectX 10, R6xx čipovi donose brojne novitete, ali nas, kao i uvek, najviše zanimaju 3D performanse...

    Sadržaj

      Branko Maksimović AMD ATI Radeon HD2900 XT Uvod Benchmark web sajt je ponovo od strane AMD-a prepoznat kao jedan od ključnih
      IT medija u regionu, pa smo tako imali čast da prisustvujemo zvaničnom predstavljanju
      ATI Radeon HD 2000 serije grafičkih akceleratora u Tunisu. Tzv. Tech Day manifestacija
      koja se odigrala od 22. do 25. aprila u hotelu Sheraton u Tunisu upriličena
      je od strane AMD-a, novog vlasnika kompanije ATI, za oko 300 novinara iz celog
      sveta. Naravno, već po dolasku u hotel morali smo da potpišemo NDA (non-disclosure
      agreement) koji nas je sprečavao da zvanično i nezvanično prenesemo bilo
      kakve informacije koje smo u višednevnim predavačkim sesijama saznali u Tunisu.
      Zaista, mora se odati priznanje organizatorima, jer su nas postepeno uvodili
      u tehnološke finese novih akceleratora, da bi nas na kraju nokautirali tzv. deep
      dive prezentacijama koje su trajale celog dana, ali na kojima smo mogli
      saznati svaki detalj vezan za famozni R600. Pored novih ATI-jevih GPU-ova,
      AMD je istom prilikom prezentovao i novu familiju svojih ”Stars” procesora
      koji treba postepeno da potisnu dosadašnje procesore koje je AMD imao u ponudi,
      a koji spadaju u ”Cities” seriju. Dakle, izgleda da je AMD odlučio
      da se izdigne do neslućenih visina novim Phenom procesorima koji će
      biti ponuđeni u ”X2” i ”X4” verzijama, u zavisnosti već od broja raspoloživih
      jezgara. Da, radi se o dugo iščekivanim procesorima baziranim na K10 (prethodno
      nazivano K8L) jezgrima koji bi uz R600 trebalo da nas uvere da se stvari oko
      akvizicije ATI-ja od strane AMD-a, kreću u pravom smeru i da će priča imati
      srećan završetak baš kao što to svi i očekujemo. Moramo priznati da gledajući
      veliki broj slajdova na prezentacijama koje su trajale bukvalno po ceo dan,
      nismo mogli da se otmemo utisku da je u razvoj R600 čipa uloženo na hiljade
      sati inženjerskog rada, a u to su nas uverili i najviši predstavnici razvojnih
      timova kompanije ATI koji su doputovali iz Kanade kako bi prisustvovali ”zatvorenom
      predstavljanju” svog novog čeda. Veliki raspon između tzv. ”novinarskog predstavljanja”
      R600 čipa i isteka NDA, koji je zabranjivao prenošenje tehničkih informacija
      i rezultata testova novih ATI Radeon akceleratora, u neku ruku je i pozitivna
      stvar. Naime, na taj način smo bili u prilici da hladne glave, nakon što su
      se utisci dobro slegli, prenesemo vama, dragi čitaoci, naše mišljenje o novim
      ATI-jevim akceleratorima. Da podsetimo, 14. maj je datum isteka važnosti NDA
      ugovora za ATI Radeon HD2900XT i delimično za ostale predstavnike nove familije
      Radeon 3D akceleratora. Znači, od današnjeg datuma, mogu se prenositi informacije
      vezane za arhitekturu RV610 i RV630 čipova, ali ćemo na javnu objavu rezultata
      testova morati sačekati 1. jul, kada će osim isteka važnosti NDA ugovora predstavnici
      celokupne serije Radeon HD 2000 akceleratora biti dostupni u prodaji.

      Uvod, drugi deo AMD definitivno ulazi u novu eru svog poslovanja i egzistencije. Od oktobra
      prošle godine, kada je završena integracija sa kanadskom kompanijom ATI Technologies,
      “novi AMD” je krenuo sa realizacijom novih projekata, prateći tako trendove
      koji postaju dominantni u IT industriji, ali i postavljajući i sopstvene. Osim
      već sada čuvenog “Fusion” projekta, koji će objediniti grafički i multipurpose
      (sistemski) PU u jedno, tu su i projekti AMD Imageon familije media procesora,
      kreiranih za sve zahtevnije tržište mobilnih telefona i prenosnih uređaja,
      kao i GPU-a za igračke konzole (Microsoft Xbox360, Nintendo Wii).
      Međutim, ono što je na Deep Dive prezentacijama u Tunisu bilo najbitnije predstaviti,
      jeste nova familija Radeon akceleratora sa podrškom za DirectX 10. AMD je predstavio
      kompletnu “top to bottom” ponudu, kako za dekstop, tako i za notebook tržište,
      a novajlije nose novi prefiks u oznaci – HD, što je u skladu sa aktuelnim trendovima:
      u poslednje vreme se sve označava sa ova dva magična slova. Nova Radeon familija
      se sastoji od tri klase desktop akceleratora: ATI Radeon HD 2400, Radeon HD
      2600, Radeon HD 2900, koje spadaju u value, mainstream i high-end (enthusiast)
      kategorije, respektivno. Na još popularnijem, notebook tržištu, ATI
      Radeon HD 2300 je rešenje za najjeftinije notebook računare sa discreete grafikom
      (najjeftiniji po pravilu imaju integrisanu), dok su Mobility Radeon HD 2400
      i HD 2600 namenjeni za prenosnike za zahtevnije korisnike, odnosno za igračke i
      desktop replacement varijante. U kompaniji ATI, koji je sada “graphics
      division of AMD”, se svo ovo vreme nikako nisu odmarali, pa nova Radeon HD
      familija poseduje ključne karakteristike koje su zaista impresivne, od kojih
      su mnoge po prvi put viđene kod desktop 3D i video akceleratora. Novi, R600
      GPU je izrađen u 80-nanometarskom procesu i pored toga što ima čak 700 miliona
      tranzistora, jezgro je sposobno za učestanosti od 800 MHz. Ovo veliko jezgro
      u sebi sadrži čak 320 streaming procesora (naziv je verovatno sa namerom preuzet
      od NVIDIA-e), koji su sposobni za vektorske i skalarne operacije i podržavaju
      Shader Model 4.0 i DirectX 10. Još jedna od “velikih” brojki koje će partneri
      postavljati na ambalažu Radeon HD2900 kartica je i podrška za 128-bit HDR i
      24x anti-aliasing. Tu je i novi, Native Crossfire, koji smo prvi put videli
      kod Radeon X1950 Pro i X1650 XT kartica, a koji će moći da se realizuje i na
      “starim” Crossfire kompatibilnim pločama kakve su Intel 975 (i neke 965), zatim
      RD580, RD560… Radeon HD kartice će, osim posvećenog video-engine-a
      (nezavisni, hardverski dekoder HD video formata kakvi su H.264 i VC-1, a koje
      AMD naziva UVD) imati podršku i za HDMI konektore, a da li će oni biti ugrađeni,
      ili ćemo monitore (i LCDTV uređaje) na ovaj univerzalni audio-video digitalni
      interfejs povezivati preko DVI-I-to-HDMI adaptera više i nije bitno. Novi Radeon
      HD modeli svakako podržavaju HDMI i HDCP iz samog čipa, pa partneri neće imati
      dodatni trošak oko implementacije ovih standarda na svoje kartice. Implementacija
      HDMI konektora ima još više smisla kada uređaj na kome se nalazi može da reprodukuje
      i zvuk, međutim, ni to nije problem za novi Radeon HD2900 akcelerator. I o
      tome, nešto detaljniju priču možete pročitati na narednim stranama.

      Već sa Radeon X1600, a nešto kasnije i sa high end Radeon X1950 čipom,
      R580, ATI je predstavio tzv. asimetričnu arhitekturu, koja je imala tri puta
      više Pixel Shader jedinica u odnosu na raster operator jedinice. Upravo
      za ovu arhitekturu nam je rečeno da je “na pola puta” ka Unified Shader GPU-u,
      koji smo tada svi tako željno očekivali, jer smo znali da predstavlja sledeći
      korak (tada je već postojao Xenos – Unified Shader GPU koji je ATI kreirao za
      Xbox360) na tako uzbudljivom tržištu grafike za PC računare.

      Deep Dive in R600 Podsetićemo vas da je NVIDIA sa G7x i nV4x arhitekturom imala klasične Quad
      jedinice sa jednakim brojem Pixel Shader i TMU jednica, pa je tako G71 imao
      24 PS i TMU, 16 ROP i 8 Vertex Shader jedinica. ATI je dizajnirajući Xenos
      GPU, predstavio prvi Unified Shader GPU, koji je uspešno prebačen na silcijum
      još sredinom 2005. godine. Čak i krajem iste godine, njihov prvi Shader Model
      3.0 (DirectX 9.0c) GPU, R520 je imao sličnu Quad Pipeline arhitekturu
      kao i prethodna generacija grafičkih procesora, ali se jedan čip, RV530, isticao
      naprednijim dizajnom, koji je kasnije nasledio Radeon X1950 XTX, odnosno R580.
      Ovaj GPU je imao standardnih 16 ROP i TMU, ali čak 48 Pixel Shader jedinica. Ultra
      Threading Dispatch jedinica posao deli u threadove i šalje ih na masivnu
      paralelnu obradu. Sa G80, NVIDIA ide i korak dalje; ne samo što shader jedinice
      postaju odvojene od teksturnog i back-end dela GPU-a, već postaju i “unificirane”.
      Međutim, iako su sposobne da procesiraju i vertex i pixel shader instrukcije,
      ovi Streaming Processor-i su po layout-u jednostavniji od
      posvećenih Pixel i Vertex Shader jedinica, jer su u pitanju
      obični skalarni procesori. S obzirom da su i vrlo efikasni u FP kalkulacijama,
      lako je moguće programirati ih da rade operacije za izračunavanje boje piksela,
      pozicije teksela, sila koje deluju na njih, ali i nečeg desetog. A s obzirom
      na to da su jednostavne i “pakovane” odvojeno od ostatka čipa, bilo je moguće
      dodeliti im visoke radne učestanosti – i do 3x više od takta na kome rade ROP
      i TMU jedinice uže specijalnosti, odnosno memorijski kontroler. Međutim, i
      ovaj princip poseduje negativne strane: skalarne jedinice ne mogu da rade sa
      vektorskim operacijama, pa se svaka od vektorskih informacija prevodi u više
      skalarnih i to po dva puta, u oba smera. Koliko god brz bio Streaming Processors
      Unit, ovo dovodi do pada efikasnosti, pa je i nešto drugačiji pristup,
      koji primenjuje ATI ako ne bolje, onda bar jednako dobro rešenje.

      AMD-ov R600 GPU se sastoji od približno 700 miliona tranzistora, odnosno
      osnovnih poluprovodničkih elemenata u 80-nanometarskom procesu koji AMD naziva
      80HS. Prosto je neverovatno kada pomislimo da je jedan tako kompleksan čip
      smešten na malu pločicu površine od svega par kvadratnih centimetara. Kako
      bi bolje shvatili koliko su tranzistorska kola u modernim procesorima sitna,
      preporučujemo da posetite ovu
      web lokaciju
      . R600 nasleđuje najbolje od svojih prethodnika – Radeona X1950
      XTX i naravno Xenos GPU-a, ali je i od njih značajno napredniji. Na default
      taktu kod modela Radeon HD2900 XT, R600 isporučuje čak 475 GigaFLOPS-a, što
      nam uz nešto više učestanosti (koje će 65-nm verzija čipa verovatno lako postizati)
      i u Crossfire režimu donosi impresivnu cifru od čitavog TeraFLOPS-a, koja je
      već merljiva sa pojedinim super-kompjuterima. Kao što možemo videti u tabeli,
      R600 sadrži 16 TMU (texture management units), 16 render back-end jedinica
      (češće smo ih nazivali Raster Operator Processors – ROP), kao i impresivnih
      320 Stream Processor unita.

      Radeon R600 je nastao na temeljima R580 arhitekture (jako brzo izvršavanje
      dinamičkog grananja, posebne texture register cache memorije, fetch
      4), dok je od Xbox360 GPU-a (Xenos) nasledio arhitekturu unificiranih vertex
      i pixel shader-a, usavršeni load-balancing (između vertex, pixel i
      geometry shader operacija) i maksimalizovanu upotrebu ALU jedinica. Naravno,
      R600 je napredniji od oba ova GPU-a: superskalarna shader arhitektura je jedna
      od ključnih novina, a poboljšan je i ultra-threaded dispatch procesor (u ATI-ju
      tvrde da je razvijen od nule), dodata podrška za geometry shaders, odnosno
      za DirectX 10 (R580 je DX9.0c, dok je Xenos nešto između DX9 i DX10). Kao što možemo videti na tabeli gore, R600 GPU se “sastoji” od nekoliko sistemskih
      celina: Command Processor, Setup Engine-a, Ultra-Threaded Dispatch Procesora,
      Stream Processing jedinica, teksturnih i keš jedinica, Memory Read/Write
      Cache & Stream Out bafera, Shader Export, Render Back-Ends i
      memorijskog kontrolera. Pogledaćemo i arhitekturu jednostavnijih RV6xx čipova,
      o kojima će više reči biti u testu koji ćemo objaviti u junu, nakon isteka
      NDA.

      Radeon HD2600 GPU

      Radeon HD2400 GPU

      Unified Shader Architecture Prednosti koju arhitektura unficiranih tj. objedinjenih shader-a donosi u odnosu
      na tradicionalnu, sa podeljenim vertex i pixel shader jedinicama, lepo se mogu
      videti na tabeli koju smo prikazali ispod. U prethodnim verzijama DirectX-a,
      pixel shader je uvek bio više ograničen od vertex shader-a, bar kada posmatramo
      maksimalan broj stalnih i privremenih registara ili instrukcija. Programeri
      su svaki put morali da kreiraju posebne shader programe koji će se, recimo,
      odnositi isključivo na jednu osobinu nekog materijala (koji se izvršava u pixel
      shader-u) ili na promenu njegovog izgleda nakon nekog fizičkog uticaja (udarac
      metka u metal, program koji se izvršava u vertex shader-u). Shader Model 4.0
      pruža unificiran set instrukcija sa istim brojem privremenih i stalnih registara
      i input-a kroz ceo pipeline. Kreatori igara više neće morati da brinu o limitima
      koje postavlja maksimalan broj poziva ka centralnom procesoru usled prevelikog
      broja izmene stanja, jer će sve shader programe praktično izvršavati samo GPU
      (ako zanemarimo zaista minimalan broj CPU verifikacija).

      Command Processor & Setup Engine Kao što smo ranije naveli, R600 se sastoji od nekoliko celina. Command Processor
      preuzima i izvršava niz mikro-komandi od samog drajvera i ima pun pristup memoriji.
      Osim što je ovaj proces preuzeo od sistemskog CPU-a, čime se broj upita koje
      mu drajver šalje smanjuje i do 30%, Command Processor funkcioniše na hardverskom
      nivou, ali ipak funkcioniše samo tokom izvršavanja DirectX 9 i DirectX 10 aplikacija.
      Setup Engine zatim priprema podatke za dalju obradu od strane stream processing
      jedinica i to na tri načina, u zavisnosti od tipa podataka. Za vertex shader
      programe, Setup Engine izvršava spajanje vertex-a i vrši njegovo deljenje (tesselation),
      dok za geometry shadere izvršava spajanje geometrije (geometry assembly funkcija).
      Ako na obradu stignu pixel shader programi, Setup Engine vrši konverziju i
      interpolaciju koda kako bi isti bio prilagođen za procesiranje unutar streaming
      processing unita.

      UltraThreaded Dispatch Processor Za UltraThreaded Dispatch processor smo čuli i o njemu pisali u testovima Radeon
      X1800, X1900 i X1950 XTX akceleratora. U odnosu na UTD iz R5xx GPU-ova, novi
      Dispatch Processor je dodatno unapređen zbog znatno intenzivnijeg paralelizma.
      Ako znamo da je shader zapravo program koji se sastoji od
      seta instrukcija koje opisuju karakteristiku nekog vertex-a (tačke u 3D prostoru),
      piksela ili primitive (osnovne površine ili dela površine u 3D prostoru), onda
      je lako dati i definiciju za thread, koji je zapravo niz tačaka
      (u 3D prostoru), poligona ili piksela koji zajedno čine skup podataka, odnosno
      jedinicu od koje zavisi i na koji se odnosi određen deo shader programa.
      Nakon što preuzme podatke iz Setup Engine-a i postavi ih u posebne redove (command
      queues) za svaki od tipova shadera, arbiter jedinice odlučuju koji će se sledeći
      thread izvršavati i to na osnovu posebnih parametara. Svaki od četiri SIMD
      (single instruction multiple data) niza koji sadrži po 80 Streaming Processors
      jedinica ima dva sopstvena arbitera, dok i jedinice za operacije sa teksturama
      i vertex fetch poseduju posvećene arbiter-e, koji rade nezavisno od prethodno
      pomenutih. S obzirom da i na nivou arbitera i celog UltraThreaded Dispatch
      procesora postoje i posebne bafer memorije, svaki od threadova koji se izvršavaju
      mogu biti povučeni i postavljeni “on hold” kako bi se što pre izvršio thread
      koji ima veći prioritet (command queue sistem za svaki od threadova postavlja
      i nivo prioriteta). Thread koji je bio procesiran se privremeno snima (Shader
      instruction cache), pa se rad na njemu nastavlja čim se završi procesiranje
      threada sa većim prioritetom. Ove cache memorije su posebno namenjene za čuvanje
      podataka radi bolje organizacije procesiranja podataka kroz SIMD jedinice i
      efikasniji paralelizam. Keš memorije se mogu podeliti na instruction cache,
      koji može da radi sa shader programima praktično beskonačne dužine i constant
      cache, koji podržava beskonačan broj konstanti, kako bi se shaderi koji se
      često koriste mogli privremeno čuvati i radi smanjenja broja stanja (manji
      broj poziva ka CPU-u, pogotovo tokom pripremanja scena za DirectX 9 aplikacije).
      Ultra Threaded Dispatch Processor je unapređen i tako da sakrije latenciju
      koja se stvara na nivou GPU-video memorija, jer posvećeni command queue sistem
      može da rasporedi na stotine threadova kako bi se obezbedila maksimalna zaposlenost
      SIMD jedinica. Pomenute cache memorije su GPR tipa (General Purpose Registers),
      koje mogu da čuvaju threadove koji tek treba da se obrađuju, ali i one koji
      su, kada su snimljeni bili u procesu obrade (intermediate shader data), kao
      i one koje su obrađene (output shader data). Superscalar Architecture SIMD (Single Instruction, Multiple Data)
      jedinice su dizajnirane po novom principu koji ATI naziva Very Large Instruction Word
      (VLIW). Iako se sa ovim sistemom ne susrećemo prvi put, nije zgoreg napomenuti
      da su nove SIMD jedinice unapređene tako da se svaki thread paralelno izvršava
      na više elementarnih nivoa (5 matematičkih operacija uz obavezan flow
      control
      ). Unutar svakog shader programa postoji specijalna instrukcija
      koja kontroliše, odnosno opisuje kako bi kod trebalo da se izvrši pod određenim
      (važećim) uslovima. Niz ovih instrukcija kroz nekoliko povezanih ili jedan
      (veći) shader program se zajedno nazivaju – flow control. Zahvaljujući preciznom
      Dispatch Processoru i već pomenutim arbitrima, sve operacije unutar jednog
      thread-a se izvršavaju paralelno kroz celu SIMD jedinicu, uz napomenu da se
      Texture i Vertex Fetch operacije prosleđuju i izvršavaju odvojeno.

      Arhitekturu R600 GPU-a nazivamo superskalarnom, dok je ona kod G80 – skalarna.
      To je zbog toga što R600 sadži niz superskalarnih shader procesora. Svaki od
      ovih procesora može da pripremi do pet skalarnih multiply/add instrukcija po
      kloku u 32-bitnom floating point formatu, uz podršku za integer i bitwise operacije.
      AMD na svom tech-sheetu navodi da “svaki peti streaming processor može da radi
      sa instrukcijama kakve su SIN, COS, LOG i EXP”, međutim – o čemu je reč? 320
      streaming processora je zapravo skup od 64 ALU jedinice vec4+scalar tipa. Dakle,
      svaka od njih može da obradi do pet skalarnih MAD (multiply/add) instrukcija,
      što znači da ukupno, po kloku, obrađuje 320. Međutim, tek svaki peti može da
      radi sa LOG, EXP, COS i drugim kompleksnijim operacijama, što znači da po kloku
      R600 obrađuje do 64 vec4 instrukcije. Pošto SP jedinice kod NVIDIA G80 čipa
      rade samo sa skalarnim operacijama (vektorske se prevode u skalarne), logično
      bi bilo da i R600 ima mogućnost da prevodi vec4 instrukcije u skalarne, kako
      bi GPU bio efikasan u svakoj situaciji (prilikom izvršavanja threadova koji
      se, recimo, 90% sastoji od vec4 instrukcija). Kako su SP jedinice kod R600
      raspoređene u četiri SIMD niza, možemo primetiti da svaki SIMD niz ima po 16
      vec4+scalar jedinica (koje AMD naziva 5-way superscalar shader processors),
      odnosno 80 po AMD-ovoj računici. Svaki SIMD niz poseduje posvećene General
      Purpose Register bafere koji čuvaju threadove koji tek treba da se obrađuju,
      one koji su u procesu obrade, kao i one koje su obrađeni.

      Ovako moćan “Streaming Computing” ima primenu i van sveta igara ili profesionalne
      (CAD) grafike. Ne samo što je veoma pogodan za napredno procesiranje video
      materijala, fotografija ili zvuka, već svoje primene ima i u medicini. Upravo
      je na Deep Dive prezentacijama, gospođica Natalya Tatarchuk, na poziciji “3D
      Applications Research Group” u kompaniji AMD, dala prezentaciju o tome kako
      se R600 može koristiti za real-time vizuelizacije; podatke koje računaru šalje
      MRI (Magnetic Resonance Imaging scan) ili PET (Positron Emission Tomography)
      skener mogu se iskoristiti za kreiranje 3D modela. Naravno, R600 je dovoljno
      moćan i za izvršavanje virutelnih operacija ili istraživanje vaskularnih puteva.
      U svakom slučaju, osim za obuku, može se koristiti i za edukaciju kadrova jer
      više za ove primene nisu neophodni super-kompjuteri. Virtuelna endroskopija
      je sada već moguća jer R600 podržava i real-time volumetric rendering, subsurface
      scattering, a postoji način i da se simulira collision response, odnosno da
      se do detalja predstave uslovi unutar tkiva i organa gde nijedna kamera ne
      bi mogla ništa da snimi. Osim u medicini, Streaming Processing se može iskoristiti
      i za simulaciju dinamike fluida, što može biti veoma korisno u krajnjim fazama
      CAD i CAM dizajna (virtuelni air-tunnel u kome možete isprobati koliko je dinamičan
      auto koji ste kreirali), ali i u meteorologiji ili vizuelizaciji hemijskih
      procesa. R600 je već dovoljno snažan za realnu zapreminsku simulaciju (oblaci,
      para, dim) fluida.

      Texture Units Radeon HD2900, odnosno R600 GPU ima i četiri teksturne jedinice, od kojih svaka
      poseduje osam texture adress procesora. Poređenja radi, R580 poseduje četiri
      jedinice sa po četiri texture adress processing unita. Ako sve maksimalno pojednostavimo,
      mogli bi smo reći da R600 ima 32 TMU jedinice, mada su one sada znatno efikasnije.
      Međutim, stvari ipak nisu tako jednostavne, jer svaki od četiri teksturna procesora,
      pored osam jedinica za adresiranje tekstura, sadrži i četiri floating point
      filtering jedinice (ukupno 16) i po 20 texture sampling jedinica (ukupno 80).
      Pošto su RV6xx čipovi nastali na R600 arhitekturi, i Radeon HD2400 i HD2600
      imaju identične teksturne jedinice. Svaka od pod-jedinica za filtriranje tekstura
      nudi i do sedam puta više performanse u odnosu na iste jedinice kod prethodne
      generacije (R5xx) procesora kada govorimo o bilinearnom filtriranju u HDR formatu
      uz 64-bitnu preciznost. 128-bit format obara brzinu za oko 50%, što je odličan
      podatak, znajući da je rad u ovom formatu gotovo nemoguća misija na Radeonu
      X1900. Anizotropno filtriranje usporava R600 mnogo manje nego R580, pa je high-quality
      mod kod Radeon X1000 familije postao default kod Radeon HD2000 serije.
      Viši kvalitet anizotropnog filtriranja je nešto što smo očekivali, znajući
      da je i NVIDIA kod G80 postavila nove standarde kada je podrazumevani kvalitet
      filtriranja u pitanju. I bilo je vreme! Teksturni sistem u okviru R600 GPU-a
      donosi i novi sistem koji ATI naziva Depth Stencil Textures (DST) zajedno sa
      Percentage Closer Filtering (PCF) algoritmom. No, o tome ćemo pričati u nekom
      od narednih testova kada budemo imali konkretnije informacije.

      Radeon HD2000 familija akceleratora donosi i podršku za novi format tekstura
      (RGBE 9:9:9:5) za najčešće upotrebljavani 32-bit HDR format (FP16) koji koristi
      najveći broj igara (manji broj igara koristi jednostavniji integer format (INT16)
      za HDR. Novina je i podrška za teksture izuzetno velike rezolucije – čak 67
      megapiksela (odnosno megateksela u 3D svetu), što znači da bi Radeon HD2900
      mogao da izađe na kraj sa teksturama rezolucije 8192 x 8192 piksela. Kao i
      R580, Radeon HD2900 može da izvrši do dve texture fetching operacije po teksturnoj
      jedinici u jednom kloku (filtered + unfiltered), ali samo R600 ima mogućnost
      i da izvrši do četiri nefiltrirane fetch instrukcije (Fetch4). Podrazumeva
      se da Texture Filtering jedinice imaju pun pristup pixel, vertex i geometry
      shader programima koji se smeštaju u General Purpose Register bafere.
      Geometry Processor & Programmable Tesselation

      Sirova propusna moć čipa, fillrate i brzina obrade podataka vezanih za geometriju
      zavisi od brzine vertex shadera, geometry shadera, brzine triangle setup sistema,
      efikasnosti vertex fetch podsistema unutar TM jedinica, veličine vertex cache
      bafera i efikasnosti sistema za upisivanje i čitanje podataka u i iz nje. Postavlja
      se i pitanje efikasnosti sistema za tzv. geometry amplification (o čemu ćemo
      takođe pisati nešto kasnije). Međutim, u AMD-u su sigurni da je njihov processor
      za kalkulaciju geometrije najefikasniji na tržištu, jer je R600 sposoban za
      Fetching do 16 “tačaka” po kloku, dok se vertex shader programi izvršavaju
      i do deset puta brže (u odnosu na Radeon X1000 seriju) najpre zahvaljujući
      prelasku na Unified Shader arhitekturu (postojanje load-balancing-a je najbitniji
      upravo na ovom nivou). Cache registri su u odnosu na R5xx seriju povećani čak
      osam puta, a AMD tvrdi da je njihov Geometry Shader procesor i do 50 puta (!!!)
      efikasniji od rešenja koje nudi konkurencija. R600 donosi i programabilno deljenje
      geometrije (programmable tesselation).

      Hardware tesselation je našim čitaocima možda poznat još iz vremena Radeon
      7000 akceleratora, kada je primenjen prvi i vrlo primitivni oblik higher order
      surfaces sistema. Od sličnog principa (N-Patches) je i NVIDIA ubrzo odustala
      – čekali su se “bolji dani” i neka vrsta standardizacije kroz API, kao i veće
      interesovanje game developera. U AMD-u, odnosno njegovoj grafičkoj
      diviziji, smatraju da je upravo sada pravo vreme za hardware tesselation. Implementacija
      ove funkcije omogućava kreatorima igara da povećaju broj promena na geometriji
      nivoa, odnosno samim objektima i uvedu detaljne deformacije terena ili samih
      objekata, uz znatno manji broj informacija koji se šalje GPU-u. Kao što možemo
      videti na slikama, tesselation se oslanja i na upotrebu displacement “tekstura”
      kakve su normal i paralax occlusion mape. Implementacija ovih tehnika bi mogla
      da omogući da se kvalitet prikaza u igrama približi onom kod modernih 3D crtanih
      filmova, a onda i CG grafici iz holivudskih filmova. Naravno, problem je u
      tome što su CG filmovi prerenderovani i što njihovo kreiranje može da traje
      koliko god je to potrebno, dok u igrama između dva frejma ne sme da prođe više
      od petnaestak milisekundi. Kao što smo već pisali, displacement mape se postavljaju
      na jednostavan (low-poly) 3D objekat i svaki piksel na toj mapi označava “visinu”
      u odnosu na referentnu površinu (površinu objekta na koji se primenjuje). Klasična
      tekstura, odnosno color mapa onda daje “život” tom objektu, koji je prethodno
      “obogaćen” displacement teksturom (koja objektu donosi ogroman broj detalja).
      Za više informacija o displacement mapping-u pogledajte naš test Radeona X1K
      familije ili GeForce 7800 i 7900 akceleratora. Međutim, model na koji primenjujete
      normal ili paralax mapu ne mora da ima ni nekoliko desetina hiljada, već svega
      par stotina poligona. Kako se “deljenje” poligona može isprogramirati za svaki
      objekt ili čak deo objekta posebno, jasno je kolika je ušteda učinjena kada
      je protok vertex informacija u pitanju. Sasvim je logično da je “tek sada vreme
      za hardware tesselation”, jer bi ušteda za vertex shader unite bila besmislena
      kod prethodne generacije, kada bi vertex jedinice samo stajale neiskorištene.
      Sad kada su Unified Shader GPU-ovi postali stvarnost, ušteda na protoku vertex
      informacija znači više vremena za rad sa drugim tipovima informacija, ali i
      mogućnost za veći broj promena stanja nad geometrijom (deformacija terena,
      objekti koji se lome, ugibaju i sl.).

      Prva generacija higher-order surfaces sistema je pretrpela dosta kritika
      jer je njena primena u nekim igrama (autor ovog teksta se seća Unreal Tournament-a)
      donosila više grešaka u prikazu nego nekih pozitivnih promena. Poenta je da
      nije potrebno “deliti” pojedine objekte, dok je za kreiranje novih detalja
      na nekim objektima potrebno primeniti različite tipove tesselation metoda.
      Neki od njih koje ćemo pomenuti su: Bezier (nazvane po slavnom francuskom inženjeru
      Pijeru Bezijeru), koje obuhvataju sva tri matematička metoda deljenja (Linear,
      Quadratic i Cubic), zatim B-Spline, NUB, N-Patches (metod koji je još pre par
      generacija primenila NVIDIA), te deljenje po Catmull-Clark metodu ili metodu
      zaokreta (Loop). Ono što je impresivno, jeste da je ovo čisto hardverski metod,
      koji ne mora da bude podržan od strane API-ja, već samo od strane timova koji
      razvijaju softver (odnosno igre). Hardware Tesselation je već u žestokoj upotrebi
      kada su u pitanju igre za Xbox360 (Gears of War, Viva Pinata, Dead Rising su
      samo neki od primera).

      Render Back-Ends
      Ovaj deo GPU-a je unapređen u velikoj meri i u AMD-u tvrde da je čak dvostruko
      efikasniji u odnosu na rešenje iz prethodne generacije. Radeon HD2900 GPU može
      da prikaže do 32 piksela po kloku (mogli bi smo reći da R600 ima 32 ROP jedinice),
      dok Radeon HD2600 i HD2400 imaju mogućnost outputa do 8 piksela po kloku. Ovaj
      deo GPU-a je zadužen za post-processing efekte koji sada imaju značajno manji
      performance impact, dok je Render-to-texture funkcija drastično poboljšana.
      Dodat je i programabilni MSAA resolve algoritam koji omogućava Custom Filter
      AntiAliasing modove, a novi formati za texture blending su: 128-bit full floating
      point i 11:11:10 floating point format. Dok Radeon X1950 XTX podržava rad sa
      maksimalno četiri Rendering Target-a, Radeon HD2900 će raditi sa maksimalno
      osam MRT-a, što između ostalog otvara put ka bržem (i/ili kvalitetnijem metodu)
      omekšavanju ivica.

      Z/Stencil Compression & druga poboljšanja Detekcija i uklanjanje “nevidljivih” tj. zaklonjenih (occluded) površina,
      kao i kompresija Z i Stencil informacija je deo GPU-a koji se konstantno unapređuje.
      Konkretno kod R600, kompresija ovih podataka je poboljšana i sada ima odnos
      od 16:1 (prethodni sistemi su obezbeđivali odnos do 8:1), odnosno do 128:1
      u scenarijima sa 8x MSAA algoritmima. Z-buffer i Stancil Buffer informacije
      sada imaju posebne registre radi veće efikasnosti (ranije su se smeštale u
      isti bafer), a sada je po potrebi moguće i njihovo smeštanje u lokalnu video
      memoriju (van on-GPU bafera). Z Range Optimization je po konceptu sličan Ultra
      Shadow tehnici kod GeForce kartica (od generacije 6), koji podrazumeva da se
      Stancil i Z operacije vrše do određene “dubine” u 3D sceni). Re Z funkcija
      omogućava brzu proveru Z-bufferu na dva nivoa: jednom tokom izvršavanja funkcija
      nad geometrijom i kasnije, tokom pixel shadinga i to bez stvaranja dodatne
      latencije. Isti sistem obezbeđuje poboljšani Early Z test (u svakom slučaju
      pre nego što krene pixel shading scene). Hierarchical Z Buffer je unapređen:
      dodat je Hierarchical Stencil “algoritam” (HiS) koji poboljšava performanse
      u radu sa stancil senkama i zapravo je krucijalan deo pomenutog Z Range Optimization
      sistema. Hierarchical Stencil podržava i rad sa 32-bitnim Floating Point Z-Buffer
      informacijama (Radeon X1K je bio ograničen na 24-bitni format).

      Memorijski kontroler

      Radeon HD2900 XT GPU zadržava RingBus arhitekturu memorijskog kontrolera,
      ali je sada u pitanju skup kružno postavljenih “stanica” kojih ima čak osam
      (svaka širine od 64 bita, tj. 4x2x64-bita), što čini čak 512-bita. U pitanju
      je prvi desktop GPU koji ima 512-bitnu memorijsku magistralu, što je zahtevalo
      više I/O izvoda od GPU-a ka memoriji i daleko kompleksniji PCB. Najveći problem
      je u tome što, kako je čip manji, odnosno kako napreduje proizvodni proces,
      to je sve teže kreirati veći broj izvoda i kompleksniju memorijsku magistralu.
      Međutim, naporan rad inženjera AMD-a imao je za rezultat napredni dizajn I/O
      izvoda koji uz znatno veću gustinu omogućava da se na istu površinu spakuje
      čak dva puta više izvoda nego što je to bio slučaj sa izvodima (I/O pads) kod
      256-bitne magistrale (R580). Uz 512-bitni memorijski bus, AMD je uspeo da postigne
      dva puta viši memorijski propusni opseg zadržavajući iste ili čak niže radne
      učestanosti u odnosu na najbrži model prethodne generacije. Ring-bus arhitektura,
      kao i ranije, smanjuje broj vodova kroz sam GPU jer je i fizički, memorijski
      kontroler smešten po obodima GPU-a. U AMD-u tvrde da je već pri širini magistrale
      od 256-bita daleko logičnije da se koristi ring-bus tip memorijskog kontrolera,
      jer sa povećanjem širine cross-bar kontroleri postaju veoma kompleksni za dizajn
      I/O pad-a (izvoda oko GPU-a, tj. od grafičkog ka memorijskim čipovima), ali
      i dizajn “stanica” unutar mikroarhitekture čipa. Zbog toga smatramo da će NVIDIA
      sa nekim novim high-end čipom konačno predstaviti novo rešenje za memorijski
      kontroler.

      Novi AA metod – Custom Filter AntiAliasing Pored već poznatih metoda (algoritama) za eliminisanje nazubljenih ivica (anti-aliasing)
      na ivicama objekta i kroz alpha-teksture, koje obuhvataju Multisampling,
      Adaptrive SuperSampling i MultiSampling, Super AA (u CrossFire režimu), Gamma
      Corrected (resolve) AA, Programable i Temporal AA, tu je i potpuno novi
      Custom Filter Anti-Aliasing. Svaki od pomenutih AA metoda se oslanja na primenu
      postprocessing filtera od strane Render Back-end dela GPU-a. Svaki od postojećih
      metoda primenjuje upravo box tip filtera, dok CFAA upravo “posmatra” van paterna
      piksela koji se obrađuje (nalazi na “problematičnoj” ivici. Zato se za detekciju
      ivice koristi adaptive edge detect filter koji se sastoji od semplova neuniformnog
      oblika. Prema broju semplova koji obuhvata, ovaj filter se može “podeliti”
      na narrow (uski) i wide (široki). Ostatak ilustracija će vam lako pokazati
      o čemu se zapravo radi. AMD tvrdi da CFAA obezbeđuje bolje performanse od supersampling
      metoda, ali i bolje rezultate. No, kroz nove metode antialiasing-a još uvek
      nismo testirali jer očekujemo brže drajvere (CFAA filteri i same performanse
      će biti značajno bolje u kasnijim revizijama drajvera).

      Kao što smo napomenuli, Custom Filter Anti-Aliasing je novi metod za eliminisanje
      nazubljenih ivica i po prvi put je jedan ovakav metod potpuno softverski programabilan
      i može se unaprediti (upgrade-ovati) promenom parametara unutar drajvera i daljom
      optimizacijom koda, kao i pisanjem specifičnih filtera za specifične situacije
      u igrama (u čemu game developeri mogu značajno da pomognu). CFAA radi sa postojećim
      DirectX 9 aplikacijama (za sada nema podršku u OpenGL naslovima) i radi u kombinaciji
      sa HDR-om, a primenjuje se čak i na Stencil senke. U poređenju sa Coverage Sample
      AA metodom, CFAA pruža nešto bolji prikaz samih ivica, a moguća je i upotreba
      filtera sa efektivnim brojem od čak 24 sample-a. CFAA je takođe efektivniji kod
      filtriranja alpha tekstura, mada prema našim preliminarnim inspekcijama uspeva
      da pomalo zamuti samu teksturu na objektu pri najagresivnijem setovanju (16x)

      Universal Video Engine i HDCP Posle više nego afirmativnog dela članka koji hvali PureVideo HD engine druge
      generacije u našem testu G84 kartica, bili smo sigurni da će AMD da ponudi
      nešto još impresivnije i – nismo se prevarili. Kao i G84/86 GPU i nova familija
      Radeon HD akceleratora ima posvećeni video processing engine koji AMD naziva
      Universal Video Processor. U odnosu na AVIVO, UVP je napredovao koliko i PureVideo
      HD druge generacije u odnosu na rešenje iz GeForce 7 familije. Cilj je isti
      – smanjiti CPU utilizaciju pri posmatranju WMV9, H.264, AVC i VC1 video formata,
      gde su H.264 i VC1 daleko najbitniji, jer predstavljaju već prihvaćeni, standardni
      video kodek za Blu-ray i HD-DVD diskove, kao što je MPEG2 bio za DVD. Priliko
      m obrade HD video signala, pred grafičkom karticom stoji izazov koji se ne
      završava samo na procesiranju bar 6x više informacija u odnosu na video signal
      standardne definicije. Osim što je neophodno da se izbori sa više podataka,
      GPU mora da vodi računa o specifičnostima svakog kodeka, a zatim i o copy-protection
      mehanizmima na više različitih nivoa. Kao što možete videti, u tabelama je
      lepo ilustrovano koliko taskova je u svakom od “scenarija” prepušteno centralnom
      procesoru, a koliko grafičkoj kartici.

      Čak i kod G84 GPU-a, početne BitStream i Entropy Decode faze se izvršavaju
      od strane CPU-a, dok je u slučaju Radeon HD akceleratora sve na GPU-u. UVP
      je kreiran da u potpunosti dekodira i najzahtevnije (i najnaprednije) video
      kodeke kakvi su VC-1, AVC i H.264, uključujući i bit-rejtove od 40 Mbps ili
      više. UVP koristi već postojeća, programabilna SIMD jezgra, odnosno Stream
      Processors jedinice. Pošto je u stanju da off-loaduje CPU, ovaj video engine
      je ključna stvar na tržištu notebook računara, jer smanjuje potrošnju (CPU
      se ne opterećuje 80-90% već svega 5 do 10%) i produžava trajanje baterije.
      Ono što Radeon HD GPU-ovi podržavaju, za razliku od G84 i G86 procesora jeste
      podrška za full-speed CABAC i CAVLC dekodiranje u okviru H.264 i VC-1 kodeka.
      Sav postprocessing se obavlja unutar SP jedinica, uz primenu filtera koji su
      ništa drugo do namenski kreirani shader programi koji se u potpunosti izvršavaju
      “in-vivo”. HDMI, odnosno High Definition Multimedia Interface je u potpunosti
      podržan od strane R6xx GPU-a, zajedno sa obaveznim HDCP (High-bandwidth Digital
      Copy Protection) sistemom zaštite od kopiranja. Osim digitalnog signala, HDMI
      konektor “prenosi” i više kanalni audio zvuk.

      DirectX 10 rekapitulacija Microsoft-ov API DirectX je prešao dug put od kada je 1995. godine predstavljen
      kao deo Windows 95 operativnog sistema. Ovaj interfejs, odnosno “okruženje”
      za kreiranje aplikacija, i kao brojni drugi API-ji, njihovo funkcionisanje
      je vezano za rad operativnog sistema. Svoju najbitniju prekretnicu, DirectX
      je imao kada se pojavio Windows XP, prvi operativni sistem koji je bio „gaming
      friendly”. DirectX 8 je doneo rad sa kratkim programima koji se izvršavaju
      u namenski kreiranom delu grafičkog procesora; ovi kratki programi, odnosno
      shaderi su u stanju da prilagode, tj. programiraju pixel ili vertex jedinicu,
      odnosno pronađu najefikasniji način da se jedna SIMD instrukcija izvrši unutar
      specifičnih i manje specifičnih ALU jedinica. Ovaj koncept je u igračkoj industriji
      zaživeo brže nego što su u Microsoft-u računali, te u početku nisu bili spremni
      da izbace novu verziju DirectX API-ja, koja je pre svega „fokusirana” na to
      da sva ograničenja koja je prethodna generacija postavljala budu prevaziđena,
      kao i da performanse budu više. I dok su prethodne verzije ovog API-ja bile
      više nadogradnja i ubacivanje novih mogućnosti, DirectX 10 je redizajniran
      i kreiran tako da krajnje performanse budu što više. Pre nego što su se grafički
      API-ji pojavili, aplikacija je slala informacije direktno ka grafičkom procesoru,
      što je sa jedne strane dobar pristup, jer nema posrednika, ali je u tom slučaju
      nemoguće kreirati 3D igru koja bi dovoljno dobro radila sa različitim GPU-ovima.
      API je dobro rešenje, jer se između aplikacije sa jedne i GPU-a i video drajvera
      sa druge strane postavlja kao sloj koji obezbeđuje ultimativnu kompabilnost
      po principu – aplikacija mora da bude napisana po načelima (standardima) API-ja,
      dok sam GPU zajedno sa njegovom manifestacijom unutar operativnog sistema –
      drajverom, zapravo predstavlja motor za pravilno izvršavanje funkcija koje
      API i softver mogu da pošalju. Umesto da se programeri bave specifičnim funkcijama
      različitih GPU-ova, uz obavezu da se njihov softver pravilno na njima izvršava,
      aplikacija šalje niz instrukcija ka API-ju, koji ih prevodi u instrukcije razumljive
      samom hardveru. GeForce 8800GTX je prva video kartica na tržištu, lansirana
      još početkom novembra 2006. godine, koja podržava DirectX 10 i Shader Model
      4.0 u okviru Windows Vista operativnog sistema, dok je AMD tek pre nekoliko
      nedelja predstavio, a danas počinje sa prodajom svojih DirectX 10 akceleratora. PC je mašina namenjena za različite tipove upotreba, koja se shodno tome i
      konfiguriše. Međutim, koncept sistema je u svim slučajevima praktično isti,
      pa na putu ka visokim performansama pojedinih podsistema postoji mnogo prepreka,
      odnosno nečega što nazivamo „uskim grlom”. Prethodne verzije DirectX API-ja
      su se dosta oslanjale na sistemski procesor, pa i bez obzira na to što su grafičke
      kartice odavno preuzele sve kalkulacije vezane za iscrtavanje grafike (ovoga
      puta ne pričamo o ostalim komponentama koje čine jednu igru, tako da ih zanemarujemo),
      sam DirectX je bio tako organzovan da svaka operacija nad teksturom, geometrijom,
      osvetljenjem itd. mora da bude verifikovana od strane API-ja. To ne bi bio
      problem da se sam DirectX, kao i ostali API-ji Windows-a ne oslanja direktno
      na CPU kad god je potrebno da prihvati neku instrukciju koju mu šalje sama
      aplikacija (3D igra). Upravo zbog toga je toliko bitno da osim veoma jake grafičke
      kartice, za dobre performanse u igrama imate i moćan centralni procesor. Najveća
      prepreka ka igrama koje izgledaju realistično ili foto-realistično jeste večiti
      problem koji u svojoj koncepciji ima(o) grafički API, a koji se odnosi na njegovu
      zavisnost od brzine samog procesora. Geometry Shader i Stream Output su dve
      komponente novog DirectX 10 API-ja, koje, esencijalno, omougćavaju da grafički
      čip procesira čitavu „geometriju” scene bez obzira na to kojim redom i kojom
      brzinom se izvršava procesiranje vertex informacija. DirectX 9 je postavljao
      ograničenje tako što je svaki deo geometrije izvršavao redom, tako da je određeni
      objekat bio spreman za prikaz tek kada je i njegov poslednji „trougao” bio
      procesiran. U ovom API-ju je takođe bilo nemoguće prepustiti da sve kalkulacije
      vezane za geometriju scene odradi GPU, već je sa većinom ovih instrukcija morao
      da bude upoznat i sam CPU. Naravno, i ranije su postojali vertex shader programi
      koji omogućuju da manje izmene geometrije hendluje sam GPU, ali bi za drastičnu
      izmenu čitave scene (smislena manipulacija čitavom geometrijom u realnom vremenu)
      bio neophodan gigantski vertex shader program, koji bi vertex jedinica stalno
      morala da poziva iznova (ili bar da poziva naredni program), što je jako naporno
      za programere, a sve zbog limita koji postavlja DirectX 10. Jako je zanimljivo
      da je u ovom slučaju sam softver (DirectX 9 API) ograničavao i već dovoljno
      dobar, postojeći hardver (R580, G71 itd.). Uz novi, Geometry Shader, razvojni
      timovi će imati mogućnost da animiraju likove i samo okruženje u igrama bez
      konstantnog ograničenja vertex jedinice, odnosno njenog stalnog obraćanja sistemskom
      procesoru (preko API-ja). Kako će nova posvećena jedinica biti u stanju da
      sama obrađuje vertex informacije, više nećemo (morati da) gledati kako se objekti
      u igrama pojavljuju niodakle (dobar primer su brojne outdoor igre – Oblivion,
      Gothic 3 i sl.). Kao što ćemo videti kasnije, Geometry Shader kao poseban deo
      novih GPU-ova, će zahvaljujući novom DX10 API-ju moći da generiše i obradi
      podatke vezane za geometriju scene, pa ih onda pošalje u Vertex jedinicu, koja
      tradicionalno radi nad pripremom za prikaz na ekranu (transforming). Shading
      (lightning), naravno, i dalje obavlja Pixel Shader jedinica, odnosno Unified
      Shader jedinica u slučaju takve arhitekture grafičkog procesora. Geometry Shader omogućava dinamičku modifikaciju objekata unutar samog GPU-a,
      bez oslanjanja na CPU, dok je Stream Output tu da obezbedi pravilnu komunikaciju
      između pipeline jedinica koje rade na istom delu geometrije, a koja može biti
      modifikovana od strane samog Geometry Shadera. Drugim rečima, Stream Output
      je komponenta koja omogućava da se podaci generisani od strane Vertex i Geometry
      Shadera budu privremeno sačuvani u memoriji, pre nego što bi bili ponovo poslati
      na početak pipeline- a (input), da bi bili ponovo modifikovani. Ovi paketi
      podataka se upravo privremeno i čuvaju da se ceo proces inicijalnih kalkulacija
      ne bi ponavljao od početka, svaki put kada određeni shader program zahteva
      više prolaza (multiple pass operations). Neke od mogućnosti Geometry Shadera
      su prikazane na slici iznad, a mi ćemo dodati da je pametnom upotrebom ovako
      moćnog sistema za manipulaciju geometrijom, moguće kreirati svetove koji nikada
      nisu isti. Zamislite pucačinu iz prvog lica čiji hodnici nikada nisu isti svaki
      naredni put kada je igrate? I zamislite prednosti ovog sistema u online igranju
      – neki novi klinci u nekom novom “Kanteru” neće moći da nauče svaki
      kutak mape kako bi znali gde da nađu mesto za kampovanje. U ranijim verzijama DirectX-a, najveći problem je, kao što smo naveli, ograničen
      broj poziva koje API može da pošalje centralnom procesoru za svaku od manipulacija
      nad komponentama 3D scene. Zbog tog ograničenja, razvojni timovi su često grupisali
      objekte, što se naziva batching , kako bi smanjili broj „poziva” koji API upućuje
      CPU-u. Međutim, ako se objekti razlikuju po svojstvima samog materijala od
      koga su „izgrađeni”, batching nije moguć. I svaka izmena stanja (blending,
      promena teksture, oblika i sl.) bi obavezivala API da se obrati centralnom
      procesoru. Međutim, kod DirectX 9 API-ja, pre svake izmene stanja, prilikom
      svakog obraćanja CPU-u, bila je neophodna i validacija, koja je kod nove verzije
      API-ja neophodna samo prilikom prvog izvršavanja izmene nad novim objektom.
      Jedna od novih mogućnosti DirectX 10 je nazvana „niz tekstura” (Texture Array)
      koja omogućava da proces se više tekstura pune rezolucije poveže u niz bez
      potrebe da se svaka od njih poziva ponovo. Ova mogućnost je korisna u situacijama
      kada želimo da objekat postepeno promeni svojstvo (recimo, ako želimo da prikažemo
      ubrzano starenje čoveka pa je neophodna izmena teksture kože) ili samo izgled.
      Ranije bi bilo neophodno da dizajneri za svaku teksturu pozivaju kompletnu
      izmenu stanja (reteksturisanje, shading, shadowing, itd.) što je kompleksan
      proces ako se u isto vreme menjaju color, displacement teksture i light mape.
      Pošto bi se svaka od ovih tekstura menjala gotovo svake sekunde, veliki deo
      memorije i procesorskog vremena bi bio potrošen samo na taj objekat, tako da
      su u ovakvim slučajevima dizajneri često birali varijantu gde bi svaku narednu
      promenu na teksturi (odnosno svaku novu teksturu), iscrtali na samo jednoj
      teksturi, a onda za svaku promenu koristili različite koordinate (delove) iste
      bitmape. S obzirom na to da je ograničenje u rezoluciji tekstura kod DirectX
      9 API-ja 4048 x 4048 piksela, dizajneri su morali da žrtvuju ili detaljnost
      svake od tekstura ili broj samih promena, a u oba slučaja, rezultat nije ni
      izbliza impresivan kao kada se za svaku promenu primenjuje novi set tekstura;
      ovaj slučaj je bio prisutan u NVIDIA demou koji prikazuje ubrzano starenje
      automobila u garaži, ali je činjenica da u tom demou praktično imamo samo jedan
      osnovni objekat – šta bi učinili kada bi on bio samo mali deo neke kompleksnije
      3D scene? Texture Array omogućava da do 512 setova tekstura bude “vezano” u
      niz. Svaka od tekstura je indeksirana od strane samog GPU-a, kako bi broj poziva
      ka CPU-u bio još manji. Predicted Draw je još jedna funkcija koja je sada nezavisna od centralnog procesora.
      Već je poznato da u 3D sceni, nakon transformacije neophodne za prikaz, mnogi
      objekti ostanu van vidnog polja (occluded). U nekoliko poslednjih generacija
      grafički procesori su imali hardverski metod koji utvrđuje koje će površine
      biti zaklonjene (o tome smo pisali u više navrata), međutim ti metodi su u
      praksi dosta nepraktični, jer je bitnije da krajnja slika nema vizuelnih grešaka
      čak iako su performanse za neki procenat niže. Zbog toga su i na softverskom
      nivou, programeri uveli metod koji se naziva Predicted Draw i koji funkcioniše
      tako što se nakon izvršavanja operacija sa vertex-ima, scena prikaže bez tekstura,
      na najjednostavniji mogući način (kao što u filmskoj industriji, pre snimanja
      svake scene postoji pre-visualisation faza, koja omogućava reditelju da tačno
      zamisli kako će svaka scena izgledati). Ako izostavljanje nekog objekta nema
      uticaja na izgled konačne scene, onda se taj objekat u datom frejmu dalje ne
      procesira, što se naziva Occlusion Query. Sve ovo se, ponavljamo, izvršava
      isključivo uz GPU intervencije. Kako bi broj izmena stanja mogao da bude vezan
      u jedan batch i onda hendlovan od strane GPU-a, uvedena su dva nova sistema
      – State Objects i Constant Buffers. Pre DirectX 10, broj stanja je definisan
      pre nego što podaci krenu kroz pipeline , i da bi neke promene mogle da budu
      primenjene, ceo skup podataka je morao biti rekonfigurisan. Novi DirectX API
      omogućava da se izmene stanja vrše na više nivoa na pipeline- u. State Objects
      se sastoji od pet SO grupa : Input Layout, Sampler, Rasterizer, Depth Stencil
      i Blend. Constant Buffers se sastoji od predefinisanih vrednosti koji se koriste
      kao parametri unutar svih shader programa. Broj osvetljenja u sceni, sa svim
      parametrima (intenzitet, boja, pozicija) je određen konstantnom vrednošću unutar
      tog bafera. Pošto se u igrama neke od tih vrednosti menjaju, ovaj bafer se
      često mora update-ovati, ali je i dalje efikasnije da se parametri čuvaju u
      njemu, pošto se ove promene ne dešavaju „po frejmu”. Constant Buffers može
      da sačuva do 4096 vrednosti i sve one mogu biti apdejtovane samo jednom batch
      funkcijom (ranije je za svaku od promena bila neophodna posebna funckija).

      DirectX 10 je, dakle, kompletno redizajniran API koji omogućava daleko više
      performanse, bližu saradnju sa grafičkim procesorom i manju zavisnost od centralnog.
      DirectX 10 donosi i Shader Model, verzije 4.0, koji donosi nekoliko ključnih
      novina. Prva od njih je postojanje novog „koraka” u procesiranju geometrije
      – geometry shader, koji dozvoljava manipulaciju primitivama bez uticaja CPU-a.
      Druga novina je uvođenje arhitekture unificiranih shader-a, zajedno sa unificiranim
      setom instrukcija i zajedničkim resursima kroz ceo pipeline ( vertex, geometry,
      pixel shaders ); treća novina proizilazi iz druge – resursi za shader kalkulacije
      bilo kog tipa su daleko veći jer iste ALU jedinice, u zavisnosti od potrebe,
      mogu izvršavati i vertex i pixel operacije. Geometry Shader programerima daje
      mogućnost za prirodnu hardversku kalkulaciju izmene geometrije i fizičku manipulaciju
      objektima. ATI Radeon™ HD 2900 XT Specifikacija
      • 700 million transistors on 80nm HS fabrication process • 512-bit 8-channel GDDR3/4 memory interface • Ring Bus Memory Controller • Fully distributed design with 1024-bit internal ring bus for memory reads and writes • Optimized for high performance HDR (High Dynamic Range) rendering at high display resolutions • Unified Superscalar Shader Architecture • 320 stream processing units • Dynamic load balancing and resource allocation for vertex, geometry, and pixel shaders • Common instruction set and texture unit access supported for all types of shaders • Dedicated branch execution units and texture address processors o 128-bit floating point precision for all operations o Command processor for reduced CPU overhead o Shader instruction and constant caches o Up to 80 texture fetches per clock cycle o Up to 128 textures per pixel o Fully associative multi-level texture cache design o DXTC and 3Dc+ texture compression o High resolution texture support (up to 8192 x 8192) o Fully associative texture Z/stencil cache designs o Double-sided hierarchical Z/stencil buffer o Early Z test, Re-Z, Z Range optimization, and Fast Z Clear o Lossless Z & stencil compression (up to 128:1) o Lossless color compression (up to 8:1) o 8 render targets (MRTs) with anti-aliasing support o Physics processing support • Full support for Microsoft DirectX 10.0 o Shader Model 4.0 o Geometry Shaders o Stream Output o Integer and Bitwise Operations o Alpha to Coverage o Constant Buffers o State Objects o Texture Arrays • Dynamic Geometry Acceleration o High performance vertex cache o Programmable tessellation unit o Accelerated geometry shader path for geometry amplification o Memory read/write cache for improved stream output performance • Anti-aliasing features o Multi-sample anti-aliasing (up to 8 samples per pixel) o Up to 24x Custom Filter Anti-Aliasing (CFAA) for improved quality o Adaptive super-sampling and multi-sampling o Temporal anti-aliasing o Gamma correct o Super AA (CrossFire configurations only) o All anti-aliasing features compatible with HDR rendering • Texture filtering features o 2x/4x/8x/16x high quality adaptive anisotropic filtering modes (up to 128 taps per pixel) o 128-bit floating point HDR texture filtering o Bicubic filtering o sRGB filtering (gamma/degamma) o Percentage Closer Filtering (PCF) o Depth & stencil texture (DST) format support o Shared exponent HDR (RGBE 9:9:9:5) texture format support • CrossFire™ Multi-GPU Technology o Scale up rendering performance and image quality with 2 or more GPUs o Integrated compositing engine o High performance dual channel interconnect • ATI Avivo™ HD Video and Display Platform o Two independent display controllers

      Ostani u toku

      Prijavi se na newsletter listu i jednom nedeljno cemo ti poslati email sa najnovijim testovima i vestima iz sveta tehnologije.

      Hvala!

      Uspešno ste se prijavili na na naš newsletter! Proverite vaš email nalog kako bi potvrdili prijavu.

      Možda vam se svidi
      X870E Aorus Pro i X870 Aorus Elite Wi-Fi7 test