Karty graficzne
Artykuł
S. Stolarczyk, R. Sobkowski, Piątek, 10 listopada 2006, 01:53
Na nową generację układów graficznych musieliśmy czekać bardzo długo. NVIDIA wreszcie podnosi kurtynę, za którą od dłuższego czasu schowany był układ graficzny GeForce 8800 GTX, znany wcześniej pod nazwą kodową G80. Jak zwykle, mamy do czynienia z jeszcze bardziej zaawansowanym i jeszcze szybszym procesorem, który jako pierwszy jest sprzętowo zgodny z DirectX 10 (Shader Model 4.0) i posiada ujednolicone jednostki cieniowania pikseli i wierzchołków. Co tak właściwie oznacza unifikacja jednostek shader, jak wygląda architektura G80 i wreszcie jaką wydajnością dysponują GeForce 8800 GTX i 8800 GTS? Na te i inne pytania odpowiadamy w artykule!

Aby dokładnie zrozumieć co nowego niesie ze sobą architektura G80, musimy na moment wrócić do podstaw tworzenia grafiki 3D. Zanim dane 3D rozpoczną przemieszczanie się przez potok, najpierw trafiają do pamięci systemowej i procesora głównego, gdzie są definiowane. Następnie są przesyłane do potoku stałych przekształceń i oświetlenia lub poddawane działaniu programowalnego mechanizmu vertex shader. Przez lata proces modelowania trójwymiarowych scen przebiegał według poniższego schematu.

Pierwsza faza to oczywiście obróbka wierzchołków powierzchni opisującej model, zwanych werteksami, początkowo realizowana przez jednostkę T&L (Transform & Lighting - z ang. transformacji i oświetlenia), która później przekształciła się w programowalną jednostkę vertex shader (dzięki czemu zyskano znacznie większe możliwości). Kolejna faza to umieszczenie wyniku wykonanej w poprzedniej fazie pracy w scenie, czyli budowa siatki trójkątów pokrywających modele (tzw. wireframe). Przed kolejnym etapem następuje jeszcze obcinanie, gdzie te kształty, które nie będą widoczne, są ignorowane w celu zaoszczędzenia mocy obliczeniowej. Następny etap stanowi już pokrycie zbudowanych modeli teksturami i pocieniowanie ich zgodnie z wcześniej wyliczonym modelem oświetlenia, ale - uwaga - wbrew powszechnie przyjętej dla tej fazy nazwie "pixel shading" - praca nie przebiega na poziomie operacji bezpośrednio na pikselach, które będą wyświetlane na ekranie.

Przetworzenie wektorowego modelu, pokrytego bitmapowymi teksturami, na obraz przeznaczony do wyświetlania na ekranie, to następna faza, nazywana rasteryzacją. Raster Operating Processor, jak nazywa tę jednostkę NVIDIA, przetwarza zbudowane wcześniej modele na ich bitmapowy widok, który zostanie wyświetlony na ekranie. Ma przy tym sporo zajęcia - musi panować nad przesłanianiem się obiektów, w czym wydatnie pomaga mu użycie bufora Z, do niego również należą takie operacje jak antyaliasing, czyli wygładzanie krawędzi. Na tym etapie dodawana jest również mgła (jeżeli jest taka potrzeba). Gotowy obraz zostaje przesłany do bufora ramki w pamięci karty i następnie wyświetlony. I tak co najmniej 60 nowych obrazów na sekundę, bo przecież mówimy tu o sprzęcie z górnej półki.

Każda z głównych faz procesu jest w konwencjonalnym modelu obsługiwana przez specjalizowane jednostki obliczeniowe. Mamy więc jednostki vertex- i pixel shader, jednostki teksturujące i tak dalej. Okazuje się jednak, że we współczesnym modelowaniu 3D, wykorzystującym przede wszystkim arytmetykę zmiennoprzecinkową, jednostki cieniowania wierzchołków i pikseli są do siebie bardzo podobne - różnią się jedynie tym, jakie instrukcje obsługują. A przecież ich obciążenie jest bardzo zróżnicowane.

Jednolite shadery

Na tym etapie warto zadać pytanie: dlaczego ujednolicać jednostki cieniowania? Popatrzmy, jak kształtuje się obciążenie jednostek shaderów w typowej aplikacji - grze.

Już na pierwszy rzut oka widzimy, dlaczego procesory graficzne ostatnich generacji mają o wiele więcej jednostek pixel shader niż jednostek shaderów werteksów - obciążenie pixel shaderów jest znacznie większe. Ale, jeśli przyjrzymy się dokładniej, zauważymy, że w wielu przypadkach maksymalne zapotrzebowanie na jeden typ shaderów występuje w tym samym czasie, gdy jednostki shaderów drugiego typu nie mają zbyt wiele do roboty. A gdyby tak ujednolicić jednostki shaderów w ten sposób, by obsługiwały zarówno werteksy, jak i piksele? Takie rozwiązanie zapobiegłoby sytuacji, jaką widzimy na poniższej ilustracji.

Unifikacja shaderów nie została jednak podyktowana wyłącznie koniecznością zajęcia "bezrobotnych" modułów przetwarzania GPU, choć to główny powód powstania tej architektury. Trzeba pamiętać, że programiści w tych czasach mają naprawdę ciężkie zadania - kod dla pixel shaderów, kod dla vertex shaderów, kod dla procesorów wielordzeniowych, fizyka. Wszystko, co ma sprawić, że pisanie aplikacji będzie szybsze i prostsze, jest bardzo pożądane. Stworzenie ujednoliconych jednostek wprowadza natomiast pewien porządek.

Pierwszy krok w kierunku ujednolicenia shaderów zrobiła firma ATI, implementując taką architekturę w procesorze graficznym konsoli Microsoft Xbox 360 - trzy potoki shaderów, po szesnaście w każdym potoku, sprawdziły się w praktyce. Warto jednak zauważyć, że jednostki jednolitych shaderów ATI są wciąż wektorowe, obsługują w trybie SIMD (Single Instruction Multiple Data) działania na czterech 32-bitowych operandach. Tymczasem modelowanie shaderowe, szczególnie w postaci jaką niesie DirectX 10, zawiera całkiem spory udział operacji skalarnych. Ich wykonywanie przez jednostki wektorowe to spora strata potencjału wydajnościowego...

Jak rozwiązać ten problem? Receptą na procesor obsługujący DirectX 10, w którym oprócz dotychczas stosowanych vertex- i pixel shaderów dodano jeszcze kolejną warstwę modelowania shaderowego, Geometry Shader, jest stworzenie "centrum przetwarzania", obsługującego równocześnie wszystkie potrzeby procesu generowania trójwymiarowych scen. Warto zaznaczyć, że to jednak nie NVIDIA wymyśliła nowej warstwy, a firma Microsoft - jest to jedna z nowości pakietu DirectX 10.

Vertex-, pixel- i geometry shader przetwarzane w tym samym układzie shadera, z "wolnym miejscem" na przetwarzanie także warstwy fizycznej gier i innych, przyszłych zastosowań! NVIDIA pokazała rozwiązanie, utrzymując przy tym, że potrafi czynić CUDA, przynajmniej w tej skali.

Ocena artykułu:
Ocen: 5
Zaloguj się, by móc oceniać
junior (2006.11.10, 01:55)
Ocena: 0

0%
Nareszcie, juz się doczekac nie mogłem zabieram się do czytania smilies/wink.gif
Smołek (2006.11.10, 01:56)
Ocena: 0

0%
no w końcu smilies/smile.gif ale tyle się naczekałem, że chyba przeczytam jutro smilies/lol2.gif
*Konto usunięte* (2006.11.10, 01:56)
Ocena: 0
At least...
Fajnie ze daliscie bonusy i ze udalo wam sie troche o/c GTSa. W sumie ten GTS to tez calkiem rozsadna propozycja - po o/c da sie na nim wlasciwie grac we wszystko co do tej pory wyszlo i to z maks ustawieniami i AA, AF (oczywiscie jesli ktos ma monitor maks 24", bo na 30" jednak FEAR i Obek troche tna przy max rozdzielczosci smilies/wink.gif). Aha w koncowce (podsumowanie) widac juz zmeczenie autora - troche nielogicznych zdan sie zaplatalo, ale pewnie jutro to poprawicie smilies/wink.gif.
P.
Kingx (2006.11.10, 01:56)
Ocena: 0

0%
myślałem że bede pierwszy
Chłopiec (2006.11.10, 01:57)
Ocena: 0

0%
no to jazda
CarnAge (2006.11.10, 01:58)
Ocena: 0

0%
Alelluja! Zły Pies Ogrodnika już może iść na zasłużony odpoczynek! CZyli dobranoc państwu smilies/smile.gif
FlashMan (2006.11.10, 02:00)
Ocena: 0

0%
Uff, i w końcu maruderzy mogą spać spokojnie smilies/wink.gif

No proszę, myślałem, że artykuł będzie tylko o GTX smilies/wink.gif Dziś o normalniejszej porze poczytam. Dobranoc.
junior (2006.11.10, 02:05)
Ocena: 0

0%
CYTAT(Kingx @ 10 listopada 2006, 01:56) <{POST_SNAPBACK}>
myślałem że bede pierwszy


A tu ZONK smilies/szczerbaty.gif

CYTAT(CarnAge @ 10 listopada 2006, 01:58) <{POST_SNAPBACK}>
Alelluja! Zły Pies Ogrodnika już może iść na zasłużony odpoczynek! CZyli dobranoc państwu smilies/smile.gif


Dobranoc również (przeczytałem pierwszą strone i uznałem że mój mózg juz jest na tak wolnych obrotach że do 3 bym go nie przeczytał) Ide spać jutro dokończę smilies/wink.gif
Vendeur (2006.11.10, 02:05)
Ocena: 0

0%
Idę więc zrobić sobie obiadek i do lektury smilies/smile.gif .
Kingx (2006.11.10, 02:14)
Ocena: 0

0%
skonczylem
dowidzenia
Zaloguj się, by móc komentować
Artykuły spokrewnione
Aktualności spokrewnione
Facebook